Observability-constrained vision-aided inertial navigation

ABSTRACT

This disclosure describes techniques for reducing or eliminating estimator inconsistency in vision-aided inertial navigation systems (VINS). For example, an observability-constrained VINS (OC-VINS) is described which enforce the unobservable directions of the system to prevent spurious information gain and reduce inconsistency.

This application claims the benefit of U.S. Provisional Patent Application No. 61/767,691, filed Feb. 21, 2013 and U.S. Provisional Patent Application No. 61/767,701, filed Feb. 21, 2013, the entire content of each being incorporated herein by reference.

TECHNICAL FIELD

This disclosure relates to navigation and, more particularly, to vision-aided inertial navigation.

BACKGROUND

In general, a Vision-aided Inertial Navigation System (VINS) fuses data from a camera and an Inertial Measurement Unit (IMU) to track the six-degrees-of-freedom (d.o.f.) position and orientation (pose) of a sensing platform. In this way, the VINS combines complementary sensing capabilities. For example, an IMU can accurately track dynamic motions over short time durations, while visual data can be used to estimate the pose displacement (up to scale) between consecutive views. For several reasons, VINS has gained popularity to address GPS-denied navigation.

SUMMARY

In general, this disclosure describes techniques for reducing or eliminating estimator inconsistency in vision-aided inertial navigation systems (VINS). It is recognized herein that a significant cause of inconsistency can be gain of spurious information along unobservable directions, resulting in smaller uncertainties, larger estimation errors, and divergence. An Observability-Constrained VINS (OC-VINS) is described herein, which may enforce the unobservable directions of the system, thereby preventing one or more unobservable directions from erroneously being treated as observable after estimation, thereby preventing spurious information gain and reducing inconsistency.

As used herein, an unobservable direction refers to a direction along which perturbations of the state cannot be detected from the input data provided by the sensors of the VINS. That is, an unobservable direction refers to a direction along which changes to the state of the VINS relative to one or more feature may be undetectable from the input data received from at least some of the sensors of the sensing platform. As one example, a rotation of the sensing system around a gravity vector may be undetectable from the input of a camera of the sensing system when feature rotation is coincident with the rotation of the sensing system. Similarly, translation of the sensing system may be undetectable when observed features are identically translated.

In addition, this disclosure presents a linear-complexity 3D inertial navigation algorithm that computes state estimates based on a variety of captured features, such as points, lines, planes or geometric shapes based on combinations thereof, such as crosses (i.e., perpendicular, intersecting line segments), sets of parallel line segments, and the like.

As one example, the algorithm is applied using both point and plane features observed from an input source, such as an RGBD camera. The navigational system's observability properties are described and it is proved that: (i) when observing a single plane feature of known direction, the IMU gyroscope bias is observable, and (ii) by observing at least a single point feature, as well as a single plane of known direction but not perpendicular to gravity, all degrees of freedom of the IMU-RGBD navigation system become observable, up to global translations. Next, based on the results of the observability analysis, a consistency-improved, observability-constrained (OC) extended Kalman filter (EKF)-based estimator for the IMU-RGBD camera navigation system is described. Finally, the superiority of the described algorithm is experimentally validated in comparison to alternative methods using urban scenes.

The techniques described herein are applicable to several variants of VINS, such as Visual Simultaneous Localization and Mapping (V-SLAM) as well as visual-inertial odometry using the Multi-state Constraint Kalman Filter (MSC-KF), or an inverse filter operating on a subset of or all image and IMU data. The proposed techniques for reducing inconsistency are extensively validated with simulation trials and real-world experimentation.

The details of one or more embodiments of the invention are set forth in the accompanying drawings and the description below. Other features, objects, and advantages of the invention will be apparent from the description and drawings, and from the claims.

BRIEF DESCRIPTION OF DRAWINGS

FIG. 1 is a block diagram illustrating a sensor platform comprising an IMU and a camera.

FIG. 1.1 is a flowchart illustrating an example operation of estimator applying the techniques described here.

FIGS. 2( a)-2(f) are plots associated with a first example simulation. In this example, the RMSE and NEES errors for orientation (a)-(b) and position (d)-(e) are plotted for all three filters, averaged per time step over 20 Monte Carlo trials. FIG. 2( c) illustrate camera-IMU trajectory and 3D features. FIG. (f) illustrates error and 3σ bounds for the rotation about the gravity vector, plotted for the first 100 sec of a representative run.

FIGS. 3( a)-3(d) illustrate a set of plots associated with Simulation 2 including the average RMSE and NEES over 30 Monte-Carlo simulation trials for orientation (above) and position (below). Note that the OC-MSC-KF attained performance almost indistinguishable to the Ideal-MSC-KF.

FIG. 4( a) is a perspective diagram showing an experimental test bed that comprises a light-weight InterSense NavChip IMU and a Point Grey Chameleon Camera.

FIG. 4( b) is a perspective diagram illustrating an AscTech Pelican on which the camera-IMU package was mounted during the indoor experiments.

FIGS. 5( a)-5(c) are a set of plots associated with Experiment 1 including the estimated 3D trajectory over the three traversals of the two floors of the building, along with the estimated positions of the persistent features. FIG. 5( a) is a plot illustrating projection on the x and y axis. FIG. 5( b) is a plot illustrating projection on the y and z axis. FIG. 5( c) is a plot illustrating 3D view of the overall trajectory and the estimated features.

FIGS. 6( a)-6(b) are a set of plots associated with Experiment 1 including comparison of the estimated 3 σ error bounds for attitude and position between Std-V-SLAM and OC-V-SLAM.

FIGS. 7( a) and (7 b) are a set of plots associated with Experiment 2 including the position (a) and orientation (b) uncertainties (3 σ bounds) for the yaw angle and the y-axis, which demonstrate that the Std-MSC-KF gains spurious information about its orientation.

FIGS. 8( a) and 8(b) are another set of plots for Experiment 2: The 3D trajectory (a) and corresponding overhead (x-y) view (b).

FIGS. 9( a)-9(c) are perspective diagrams associated with Experiment 3. FIG. 9( a) illustrates an outdoor experimental trajectory covering 1.5 km across the University of Minnesota campus. The red (blue) line denotes the OC-MSC-KF (Std-MSC-KF) estimated trajectory. The green circles denote a low-quality GPS-based estimate of the position across the trajectory. FIG. 9( b) illustrates a zoom-in view of the beginning/end of the run. Both filters start with the same initial pose estimate, however, the error for the Std-MSC-KF at the end of the run is 10:97 m, while for the OC-MSC-KF the final error is 4:38 m (an improvement of approx. 60%). Furthermore, the final error for the OC-MSC-KF is approximately 0:3% of the distance traveled. FIG. 9( c) illustrates a zoomed-in view of the turn-around point. The Std-MSC-KF trajectory is shifted compared to the OC-MSC-KF, which remains on the path (light-brown region).

FIGS. 10( a) and 10(b) are a set of plots for Experiment 3. FIG. 10( a) illustrates position uncertainty along the x-axis (perpendicular to the direction of motion) for the Std-MSC-KF, and OC-MSC-KF respectively. FIG. 10( b) illustrates orientation uncertainty about the vertical axis (z).

FIG. 11 is a graph showing an overhead x-y view of the IMU-Kinect 3D trajectory and the point features estimated by the OC-MSC-KF SLAM.

FIG. 12 is a graph showing IMU-Kinect trajectory estimated by the compared algorithms. The black triangle denotes the initial position of the IMU-Kinect pair.

FIG. 13 shows a detailed example of various devices that may be configured to implement various embodiments in accordance with the current disclosure.

DETAILED DESCRIPTION

Estimator inconsistency can greatly affect vision-aided inertial navigation systems (VINS). As generally defined in, a state estimator is “consistent” if the estimation errors are zero-mean and have covariance smaller than or equal to the one calculated by the filter. Estimator inconsistency can have a devastating effect, particularly in navigation applications, since both the current pose estimate and its uncertainty, must be accurate in order to address tasks that depend on the localization solution, such as path planning. For nonlinear systems, several potential sources of inconsistency exist (e.g., motion-model mismatch in target tracking), and great care must be taken when designing an estimator to improve consistency.

Techniques for estimation are described that reduces or prohibits estimator inconsistency. For example, the estimation techniques may eliminate inconsistency due to spurious information gain which arises from approximations incurred when applying linear estimation tools to nonlinear problems (i.e., when using linearized estimators such as the extended Kalman Filter (EKF)).

For example, the structure of the “true” and estimated systems are described below and it is shown that for the true system four unobservable directions exist (i.e., 3-d.o.f. global translation and 1-d.o.f. rotation about the gravity vector), while the system employed for estimation purposes has only three unobservable directions (3-d.o.f. global translation). Further, it is recognized herein that a significant source of inconsistency in VINS is spurious information gained when orientation information from the image data and the IMU data is incorrectly projected along the direction corresponding to rotations about the gravity vector. An elegant and powerful estimator modification is described that reduces or explicitly prohibits this incorrect information gain. An estimator may, in accordance with the techniques described herein, apply a constrained estimation algorithm that computes the state estimates based on the IMU data and the image data while preventing projection of information from the image data and IMU data along at least one of the unobservable degrees of freedom. The techniques described herein may be applied in a variety of VINS domains (e.g., V-SLAM and the MSC-KF) when linearized estimators, such as the EKF, are used.

As used herein, an unobservable direction refers to a direction along which perturbations of the state cannot be detected from the input data provided by the sensors of the VINS. That is, an unobservable direction refers to a direction along which changes to the state of the VINS relative to one or more feature may be undetectable from the input data received from at least some of the sensors of the sensing platform. As one example, a rotation of the sensing system around a gravity vector may be undetectable from the input of a camera of the sensing system when feature rotation is coincident with the rotation of the sensing system. Similarly, translation of the sensing system may be undetectable when observed features are identically translated.

In one example, the observability properties of a linearized VINS model (i.e., the one whose Jacobians are evaluated at the true states) are described, and it is shown that such a model has four unobservable d.o.f., corresponding to three-d.o.f. global translations and one-d.o.f. global rotation about the gravity vector. Moreover, it is shown that when the estimated states are used for evaluating the Jacobians, as is the case for the EKF, the number of unobservable directions is reduced by one. In particular, the global rotation about the gravity vector becomes (erroneously) observable, allowing the estimator to gain spurious information and leading to inconsistency. These results confirm the findings of using a different approach (i.e., the observability matrix), while additionally specifying the exact mathematical structure of the unobservable directions necessary for assessing the EKF's inconsistency.

To address these problems, modifications of the VINS EKF is described herein where, in one example, estimated Jacobians are updated so as to ensure that the number of unobservable directions is the same as when using the true Jacobians. In this manner, the global rotation about the gravity vector remains unobservable and the consistency of the VINS EKF is significantly improved.

Simulations and experimental results are described that demonstrate inconsistency in standard VINS approaches as well as validate the techniques described herein to show that the techniques improve consistency and reduce estimation errors as compared to conventional VINS. In addition, performance of the described techniques is illustrated experimentally using a miniature IMU and a small-size camera.

This disclosure describes example systems and measurement models, followed by analysis of VINS inconsistency. The proposed estimator modification are presented and subsequently validated both in simulations and experimentally.

VINS Estimator Description

An overview of the propagation and measurement models which govern the VINS is described. In one example, an EKF is employed for fusing the camera and IMU measurements to estimate the state of the system including the pose, velocity, and IMU biases, as well as the 3D positions of visual landmarks observed by the camera. One example utilizes two types of visual features in a VINS framework. The first are opportunistic features (OFs) that can be accurately and efficiently tracked across short image sequences (e.g., using KLT), but are not visually distinctive enough to be efficiently recognized when revisiting an area. OFs can be efficiently used to estimate the motion of the camera over short time horizons (i.e., using the MSC-KF), but they are not included in the state vector. The second are Persistent Features (PFs), which are typically much fewer in number, and can be reliably redetected when revisiting an area (e.g., SIFT keys). 3D coordinates of the PFs (e.g., identified points, lines, planes, or geometric shapes based on combinations thereof) are estimated and may be recorded, e.g., into a database, to construct a map of the area or environment in which the VINS is operating.

System State and Propagation Model

FIG. 1 is a block diagram illustrating a vision-aided inertial navigation system (VINS) 10 comprises an image source 12 and an inertial measurement unit (IMU) 14. Image source images an environment in which VINS 10 operates so as to produce image data 14. That is, image source 12 provides image data 14 that captures a number of features visible in the environment. Image source 12 may be, for example, one or more cameras that capture 2D or 3D images, a laser scanner or other optical device that produces a stream of 1D image data, a depth sensor that produces image data indicative of ranges for features within the environment, a stereo vision system having multiple cameras to produce 3D information, and the like.

IMU 16 produces IMU data 18 indicative of a dynamic motion of VINS 10. IMU 14 may, for example, detect a current rate of acceleration using one or more accelerometers as VINS 10 is translated, and detect changes in rotational attributes like pitch, roll and yaw using one or more gyroscopes. IMU 14 produces IMU data 18 to specify the detected motion. Estimator 22 of processing unit 20 process image data 14 and IMU data 18 to compute state estimates for the degrees of freedom of VINS 10 and, from the state estimates, computes position, orientation, speed, locations of observable features, a localized map, an odometry or other higher order derivative information represented by VINS data 24.

In this example, {I _(q) _(G) ,G_(PI)} are the quaternion of orientation and position vector describing the pose of the sensing IMU frame {I} with respect to the global frame {G}. The i-th feature's 3D coordinates are denoted as G_(ƒ) _(i) , and I_(ƒ) _(i) , with respect to {I} and {G}, respectively.

In one example, estimator 22 comprises an EKF that estimates the 3D IMU pose and linear velocity together with the time-varying IMU biases and a map of visual features 15. In one example, the filter state is the (16+3N)×1 vector:

$\begin{matrix} \begin{matrix} {x = \begin{bmatrix} \begin{matrix} {I - T} \\ {q\mspace{14mu} G} \end{matrix} & b_{g}^{T} & {GV}_{I}^{T} & b_{a}^{T} & {{GP}_{I}^{T}❘{Gf}_{I}^{T}} & \ldots & {Gf}_{N}^{T} \end{bmatrix}^{T}} \\ {= \left\lbrack {X_{S}^{T}❘X_{f}^{T}} \right\rbrack^{T}} \end{matrix} & (1) \end{matrix}$ where x_(s)(t) is the 16×1 state of VINS 10, and x_(ƒ)(t) is the 3N×1 state of the feature map. The first component of the state of VINS 10 is

_(G)(t) which is the unit quaternion representing the orientation of the global frame {G} in the IMU frame, {I}, at time t. The frame {I} is attached to the IMU, while {G} is a local-vertical reference frame whose origin coincides with the initial IMU position. The state of VINS 10 also includes the position and velocity of {I} in {G}, denoted by the 3×1 vectors ^(G)p_(I)(t) and ^(G)v_(I)(t), respectively. The remaining components are the biases, b_(g)(t) and b_(a)(t), affecting the gyroscope and accelerometer measurements, which are modeled as random-walk processes driven by the zero-mean, white Gaussian noise n_(wg)(t) and n_(wa)(t), respectively.

In one example, the map state, x_(ƒ), comprises the 3D coordinates of N PFs, ^(G)f_(i), i=1, . . . , N, and grows as new PFs are observed. In one implementation, the VINS does not store OFs in the map. Instead, processing unit 20 of VINS 10 processes and marginalizes all OFs in real-time using the MSC-KF approach. An example continuous-time model which governs the state of VINS 10.

An example system model describing the time evolution of the state and applied by estimator 22 is represented as:

G ⁢ ( t ) = 1 2 ⁢ Ω ⁡ ( ω ⁡ ( t ) ) ⁢ G ⁢ ( t ) ( 2 )   p I G . ⁡ ( t ) = v I G ⁡( t ) ( 3 )   v I G . ⁡ ( t ) =   G ⁢ a ⁡ ( t ) ( 4 ) b g . ⁡ ( t ) = n wg ⁡ ( t ) ( 5 ) b a . ⁡ ( t ) = n wa ⁡ ( t ) ( 6 ) f i     G . ⁡ ( t ) = 0 3 × 1 , i = 1 , … ⁢ , N . ( 7 )

In these expressions, ω(t)=[ω(t) ω₂(t) ω(t)]^(T) is the rotational velocity of the IMU, expressed in {I}, ^(G)a is the IMU acceleration expressed in {G}, and

${{\Omega(\omega)} = \begin{bmatrix} {- \left\lfloor {\omega\; X} \right\rfloor} & \omega \\ {- \omega^{T}} & 0 \end{bmatrix}},{\left\lfloor {\omega\; X} \right\rfloor\overset{\Delta}{=}{\begin{bmatrix} 0 & {- \omega_{3}} & \omega_{2} \\ \omega_{3} & 0 & {- \omega_{1}} \\ {- \omega_{2}} & \omega_{1} & 0 \end{bmatrix}.}}$

The gyroscope and accelerometer measurements, ω_(m) and a_(m), are modeled as ω_(m)(t)=ω(t)+b _(g)(t)+n _(g)(t) a _(m)(t)=C(

_(G)(t))(^(G) a(t)−^(G) g)+b _(a)(t)+n _(a)(t), where n_(g) and n_(a) are zero-mean, white Gaussian noise processes, and ^(G)g is the gravitational acceleration. The matrix C

q) is the rotation matrix corresponding to q. The PFs belong to the static scene, thus, their time derivatives are zero.

Linearizing at the current estimates and applying the expectation operator on both sides of (2)-(7), the state estimate propagation model is obtained as:

G ⁢ ( t ) = 1 2 ⁢ Ω ⁡ ( ⁢ ω ^ ⁡ ( t ) ) ⁢ G ⁢ ( t ) ( 10 ) p ^ I G ⁡ ( t ) =   G ⁢^ v I ( t ) ( 11 ) v ^ I G ⁡ ( t ) = C T ⁡ ( G ⁢ ( t ) ) ⁢ ⁢ a ^ ⁡ ( t ) +   G ⁢g ( 12 ) ⁢ b ^ g ⁡ ( t ) = 0 3 × 1 ( 13 ) ⁢ b ^ a ⁡ ( t ) = 0 3 × 1 ( 14 ) f ^ i G ⁡ ( t ) = 0 3 × 1 , i = 1 , … ⁢ , N , ( 15 ) where ^a(t)=a_(m)(t)−^b_(a)(t), and ^ω(t)=ω_(m)(t)−^b_(g)(t).

The (15+3N)×1 error-state vector is defined as

$\begin{matrix} \begin{matrix} {\overset{\sim}{X} = \left\lbrack {\begin{matrix} {I\;{\delta\theta}_{G}^{T}} & {\overset{\sim}{b}}_{g}^{T} & {G{\overset{\sim}{V}}_{I}^{T}} & {\overset{\sim}{b}}_{a}^{T} & {G{\overset{\sim}{P}}_{I}^{T}} \end{matrix}\begin{matrix} {❘{G{\overset{\sim}{f}}_{1}^{T}}} & \ldots & {G{\overset{\sim}{f}}_{N}^{T}} \end{matrix}} \right\rbrack^{T}} \\ {{= \left\lbrack {{\overset{\sim}{X}}_{S}^{T}❘{\overset{\sim}{X}}_{f}^{T}} \right\rbrack^{T}},} \end{matrix} & (16) \end{matrix}$ where x_(s)(t) is the 15×1 error state corresponding to the sensing platform, and x_(ƒ)(t) is the 3N×1 error state of the map. For the IMU position, velocity, biases, and the map, an additive error model is utilized (i.e., x=x−^x is the error in the estimate ^x of a quantity x). However, for the quaternion a multiplicative error model is employed. Specifically, the error between the quaternion q and its estimate {circumflex over ( )}q is the 3×1 angle-error vector, δΘ, implicitly defined by the error quaternion:

$\begin{matrix} {{{\delta\;\overset{\_}{q}} = {{\overset{\_}{q}q^{- 1}} \simeq \begin{bmatrix} {\frac{1}{2}{\delta\theta}^{T}} & 1 \end{bmatrix}^{T}}},} & (17) \end{matrix}$ where δq describes the small rotation that causes the true and estimated attitude to coincide. This allows the attitude uncertainty to be represented by the 3×3 covariance matrix E[δΘδΘ^(T)], which is a minimal representation.

The linearized continuous-time error-state equation is

$\begin{matrix} \begin{matrix} {\overset{.}{\overset{\sim}{X}} = {{\begin{bmatrix} F_{s} & 0_{15 \times 3N} \\ 0_{3N \times 15} & 0_{3N} \end{bmatrix}\overset{\sim}{x}} + {\begin{bmatrix} G_{s} \\ 0_{3N \times 12} \end{bmatrix}n}}} \\ {{= {{F\overset{\sim}{x}} + {Gn}}},} \end{matrix} & (18) \end{matrix}$ where 0_(3N) denotes the 3N×3N matrix of zeros. Here, n is the vector comprising the IMU measurement noise terms as well as the process noise driving the IMU biases, i.e., n=[n _(g) ^(T) n _(wg) ^(T) n _(a) ^(T) n _(wa) ^(T)]^(T),  (19) while F_(s) is the continuous-time error-state transition matrix corresponding to the state of VINS 10, and G_(s) is the continuous-time input noise matrix, i.e.,

$\begin{matrix} {F_{s} = \begin{bmatrix} {- \left\lfloor {\hat{\omega}\; \times} \right\rfloor} & {- I_{3}} & 0_{3} & 0_{3} & 0_{3} \\ 0_{3} & 0_{3} & 0_{3} & 0_{3} & 0_{3} \\ {{- {C^{T}\left( {I\hat{\overset{\_}{q}}G} \right)}}\left\lfloor {\hat{a} \times} \right\rfloor} & 0_{3} & 0_{3} & {- {C^{T}\left( {I\hat{\overset{\_}{q}}G} \right)}} & 0_{3} \\ 0_{3} & 0_{3} & 0_{3} & 0_{3} & 0_{3} \\ 0_{3} & 0_{3} & I_{3} & 0_{3} & 0_{3} \end{bmatrix}} & (20) \\ {G_{s} = \begin{bmatrix} {- I_{3}} & 0_{3} & 0_{3} & 0_{3} \\ 0_{3} & I_{3} & 0_{3} & 0_{3} \\ 0_{3} & 0_{3} & {C^{T}\left( {I\hat{\overset{\_}{q}}G} \right)} & 0_{3} \\ 0_{3} & 0_{3} & 0_{3} & I_{3} \\ 0_{3} & 0_{3} & 0_{3} & 0_{3} \end{bmatrix}} & (21) \end{matrix}$ where I₃ is the 3×3 identity matrix. The system noise is modeled as a zero-mean white Gaussian process with autocorrelation E[n(t)n^(T)(τ)]=Q_(c)δ(t−τ), where Q_(c) depends on the IMU noise characteristics and is computed off-line.

Discrete-Time Implementation

The IMU signals ω_(m) and a_(m) are sampled by processing unit 20 at a constant rate 1/δt, where δt

t_(k+1)−t_(k). Upon receiving a new IMU measurement 18, the state estimate is propagated by estimator 22 using 4th-order Runge-Kutta numerical integration of (10)-(15). In order to derive the covariance propagation equation, the discrete-time state transition matrix, Φ_(k) is computed, and the discrete-time system noise covariance matrix, Q_(k) is computed as

$\begin{matrix} {\begin{matrix} {\Phi_{k} = {\Phi\left( {t_{k + 1},t_{k}} \right)}} \\ {= {\exp\left( {\int\limits_{t_{k}}^{t_{k + 1}}{{F(\tau)}{\mathbb{d}\tau}}} \right)}} \end{matrix}{Q_{k} = {\int\limits_{t_{k}}^{t_{k + 1}}{{\Phi\left( {t_{k + 1},\tau} \right)}{GQ}_{c}G^{T}{\Phi^{T}\left( {t_{k + 1},\tau} \right)}{{\mathbb{d}\tau}.}}}}} & (22) \end{matrix}$

The covariance is then propagated as: P _(k+1|k)=Φ_(k) P _(k|k)Φ_(k) ^(T) +Q _(k).  (23) In the above expression, and throughout this disclosure, P_(i|j) and ^x_(i|j) are used to denote the estimates of the error-state covariance and state, respectively, at time-step i computed using measurements up to time-step j.

Measurement Update Model

As VINS 10 moves, image source observes both opportunistic and persistent visual features. These measurements are utilized to concurrently estimate the motion of the sensing platform (VINS 10) and the map of PFs. In one implementation, three types of filter updates are distinguished: (i) PF updates of features already in the map, (ii) initialization of PFs not yet in the map, and (iii) OF updates. The feature measurement model is described how the model can be employed in each case.

To simplify the discussion, the observation of a single PF point f_(i) is considered. The image source measures z_(i), which is the perspective projection of the 3D point ^(I)f_(i), expressed in the current IMU frame {I}, onto the image plane, i.e.,

$\begin{matrix} {{z_{i} = {{\frac{1}{z}\begin{bmatrix} x \\ y \end{bmatrix}} + \eta_{i}}}{where}} & (24) \\ \begin{matrix} {\begin{bmatrix} x \\ y \\ z \end{bmatrix} = {I\; f_{i}}} \\ {= {{C\left( {I{\overset{\_}{q}}_{G}} \right)}{\left( {{Gf} - {Gp}_{I_{i}}} \right).}}} \end{matrix} & (25) \end{matrix}$ Without loss of generality, the image measurement is expressed in normalized pixel coordinates, and the camera frame is considered to be coincident with the IMU. Both intrinsic and extrinsic IMU-camera calibration can be performed off-line.

The measurement noise, η_(i), is modeled as zero mean, white Gaussian with covariance R_(i). The linearized error model is: {tilde over ( )}z _(i) =z _(i) −^z _(i) ≃H _(i) {tilde over ( )}x+η _(i)  (26) where ^z is the expected measurement computed by evaluating (25) at the current state estimate, and the measurement Jacobian, H_(i), is H _(i) =H _(c) [H _(q) 0_(3×9) H _(p)|0₃ . . . H _(ƒi) . . . 0₃]  (27) with

$\begin{matrix} {H_{c} = {\frac{1}{z^{2}}\begin{bmatrix} z & 0 & {- x} \\ 0 & z & {- y} \end{bmatrix}}} & (28) \\ {H_{\overset{\_}{q}} = \left\lfloor {{C\left( I_{\overset{\_}{q}G} \right)}\left( {G_{f_{i}} - G_{P_{i}}} \right) \times} \right\rfloor} & (29) \\ {H_{p} = {- {C\left( I_{\overset{\_}{q}G} \right)}}} & (30) \\ {H_{f_{i}} = {{C\left( I_{\overset{\_}{q}G} \right)}.}} & (31) \end{matrix}$ evaluated at the current state estimate. Here, H_(c), is the Jacobian of the camera's perspective projection with respect to ^(I)f_(i), while H _(q) , H_(p), and H_(f), are the Jacobians of ^(I)f_(i) with respect to I _(q) _(G) , ^(G)p_(I), and ^(G)f_(i).

This measurement model is utilized in each of the three update methods. For PFs that are already in the map, the measurement model (25)-(27) is directly applied to update the filter. In particular, the measurement residual r_(i) is computed along with its covariance S_(i), and the Kalman gain K_(i), i.e., r _(i) =z _(i) −^z _(i)  (32) S _(i) =H _(i) P _(k+1|k) H _(i) ^(T) +R _(i)  (33) K _(i) =P _(k+1|k) H _(i) ^(T) S _(i) ⁻¹.  (34) and update the EKF state and covariance as ^x _(k+1|k+1) =^x _(k+1|k) +K _(i) r _(i)  (35) P _(k+1|k+1) =P _(k+1|k) −P _(k+1|k) H _(i) ^(T) S _(i) ⁻¹ H _(i) P _(k+1|k)  (36)

For previously unseen (new) PFs, compute an initial estimate is computed, along with covariance and cross-correlations by solving a bundle-adjustment problem over a short time window. Finally, for OFs, the MSC-KF is employed to impose an efficient (linear complexity) pose update constraining all the views from which a set of features was seen.

VINS Observability Analysis

In this section, the observability properties of the linearized VINS model are examined. Specifically, the four unobservable directions of the ideal linearized VINS are analytically determined (i.e., the system whose Jacobians are evaluated at the true states). Subsequently, the linearized VINS used by the EKF, whose Jacobians are evaluated using the current state estimates, are shown to have only three unobservable directions (i.e., the ones corresponding to global translation), while the one corresponding to global rotation about the gravity vector becomes (erroneously) observable. The findings of this analysis are then employed to improve the consistency of the EKF-based VINS.

Observability Analysis of the Ideal Linearized VINS Model

An observability matrix is defined as a function of the linearized measurement model, H, and the discrete-time state transition matrix, Φ, which are in turn functions of the linearization point, x*, i.e.,

$\begin{matrix} {{M\left( x^{*} \right)} = \begin{bmatrix} H_{1} \\ {H_{2}\Phi_{2,1}} \\ \vdots \\ {H_{k}\Phi_{k,1}} \end{bmatrix}} & (37) \end{matrix}$ where Φ_(k,1)=Φ_(k+1) . . . Φ₁ is the state transition matrix from time step 1 to k. First, consider the case where the true state values are used as linearization point x* for evaluating the system and measurement Jacobians. The case where only a single feature point is visible is discussed. The case of multiple features can be easily captured by appropriately augmenting the corresponding matrices. Also, the derived nullspace directions remain the same, in terms of the number, with an identity matrix (−└^(G)f_(i)×┘^(G)g) appended to the ones corresponding to global translation (rotation) for each new feature. The first block-row of M is written as (for k=−1): H _(k)−ψ₁[ψ₂ 0₃ 0₃ 0₃ −I ₃ I ₃]  (38) where Ψ₁ =H _(c,k) C(^(I) ^(k) q _(G))  (39) Ψ₂=└^(G) f− ^(G) p _(I) _(k) ×┘C(^(I) ^(k) q _(G))^(T)  (40) and ^(I) ^(k) q_(G), denotes the rotation of {G} with respect to frame {I_(k)} at time step k=−1.

To compute the remaining block rows of the observability matrix, Φ_(k,1) is determined analytically by solving the matrix differential equation: {dot over ( )}Φ_(k,1) =FΦ _(k,1) , i.c. Φ _(1,1) =I ₁₈.  (41) with F detailed in (18). The solution has the following structure

$\begin{matrix} {\Phi_{k,1} = \begin{bmatrix} \Phi_{11} & \Phi_{12} & 0_{3} & 0_{3} & 0_{3} & 0_{3} \\ 0_{3} & I_{3} & 0_{3} & 0_{3} & 0_{3} & 0_{3} \\ \Phi_{31} & \Phi_{32} & I_{3} & \Phi_{34} & 0_{3} & 0_{3} \\ 0_{3} & 0_{3} & 0_{3} & I_{3} & 0_{3} & 0_{3} \\ \Phi_{51} & \Phi_{52} & {\delta\;{t\left( {k - 1} \right)}I_{3}} & \Phi_{54} & I_{3} & 0_{3} \\ 0_{3} & 0_{3} & 0_{3} & 0_{3} & 0_{3} & I_{3} \end{bmatrix}} & (42) \end{matrix}$ where among the different block elements Φ_(ij), the ones necessary in the analysis are listed below:

$\begin{matrix} {\mspace{79mu}{\Phi_{11} = {C{()}}}} & (43) \\ {\mspace{79mu}{\Phi_{31} = {{- \left\lfloor {\left( {{{}_{}^{}{}_{Ik}^{}} - {{}_{}^{}{}_{I1}^{}}} \right) + {{{\,^{G}g}\left( {k - 1} \right)}\delta\; t \times}} \right\rfloor}{C\left( {{}_{}^{}{}_{I1}^{}} \right)}}}} & (44) \\ {\Phi_{51} = {\left\lfloor {{{}_{}^{}{}_{I1}^{}} + {{{{}_{}^{}{}_{I1}^{}}\left( {k - 1} \right)}\delta\; t} - {\frac{1}{2}{{\,^{G}g}\left( {\left( {k - 1} \right)\delta\; t} \right)}^{2}} - {{{}_{}^{}{}_{Ik}^{}} \times}} \right\rfloor{C\left( {{}_{}^{}{}_{I1}^{}} \right)}}} & (45) \end{matrix}$ By multiplying (38) at time-step k and (42), the k-th block row of M is obtained, for k>1:

$\begin{matrix} {\mspace{79mu}{\begin{matrix} {M_{k} = {H_{k}\Phi_{k,1}}} \\ {= {\Gamma_{1}\begin{bmatrix} \Gamma_{2} & \Gamma_{3} & {{- \delta}\;{t\left( {k - 1} \right)}I_{3}} & \Gamma_{4} & {- I_{3}} & I_{3} \end{bmatrix}}} \end{matrix}\mspace{79mu}{where}}} & (46) \\ {\mspace{79mu}{\Gamma_{1} = {H_{c,k}{C\left( {{}_{}^{I\overset{\_}{k}}{}_{}^{}} \right)}}}} & (47) \\ {\Gamma_{2} = {\left\lfloor {{\,^{G}f} - {{}_{}^{}{}_{I1}^{}} - {{{{}_{}^{}{}_{I1}^{}}\left( {k - 1} \right)}\delta\; t} + {\frac{1}{2}{{\,^{G}g}\left( {\left( {k - 1} \right)\delta\; t} \right)}^{2} \times}} \right\rfloor \cdot {C\left( {{}_{}^{I\overset{\_}{1}}{}_{}^{}} \right)}^{T}}} & (48) \\ {\mspace{79mu}{\Gamma_{3} = {{\left\lfloor {{\,^{G}f} - {{{}_{}^{}{}_{Ik}^{}} \times}} \right\rfloor{C^{T}\left( {{}_{}^{I\overset{\_}{k}}{}_{}^{}} \right)}\Phi_{12}} - \Phi_{52}}}} & (49) \\ {\mspace{79mu}{\Gamma_{4} = {- \Phi_{54}}}} & (50) \end{matrix}$

One primary result of the analysis is: the right nullspace N₁ of the observability matrix M(x) of the linearized VINS M(x)N ₁=0  (51) spans the following four directions:

$\begin{matrix} \begin{matrix} {N_{1} = \begin{bmatrix} 0_{3} & \; & {C\left( I_{1_{\overset{\_}{q}G}} \right)} & G_{g} \\ 0_{3} & \; & 0_{3} & \; \\ 0_{3} & \; & {- \left\lfloor {G_{V_{I_{1}}} \times} \right\rfloor} & G_{g} \\ \; & 0_{3} & 0_{3} & \; \\ I_{3} & \; & {- \left\lfloor {G_{P_{I_{1}}} \times} \right\rfloor} & G_{g} \\ I_{3} & \; & {- \left\lfloor {G_{f} \times} \right\rfloor} & G_{g} \end{bmatrix}} \\ {= \left\lbrack {N_{t,1}❘N_{r,1}} \right\rbrack} \end{matrix} & (52) \end{matrix}$ For example, the fact that N₁ is indeed the right nullspace of M(x) can be verified by multiplying each block row of M [see (46)] with N_(t,1) and N_(r,1) in (52). Since M_(k)N_(t,1)=0 and M_(k)N_(r,1)=0, it follows that MN₁=0. The 18×3 block column N_(t,1) corresponds to global translations, i.e., translating both the sensing platform and the landmark by the same amount. The 18×1 column N_(r,1) corresponds to global rotations of the sensing platform and the landmark about the gravity vector.

Observability Analysis of the EKF Linearized VINS Model

Ideally, any VINS estimator should employ a linearized system with an unobservable subspace that matches the true unobservable directions (52), both in number and structure. However, when linearizing about the estimated state ^x, M=M(′x) gains rank due to errors in the state estimates across time. In particular, the last two block columns of M_(k) in (46) remain the same when computing M_(k)=H_(k)Φ_(k,1) from the Jacobians H_(k) and Φ_(k,1) evaluated at the current state estimates and thus the global translation remains unobservable. In contrast, the rest of the block elements of (46), and specifically Γ₂ do not adhere to the structure shown in (48) and as a result the rank of the observability matrix {circumflex over (M)} corresponding to the EKF linearized VINS model increases by one. In particular, it can be easily verified that the right nullspace {circumflex over (N)}₁ of {circumflex over (M)} does not contain the direction corresponding to the global rotation about the g vector, which becomes (erroneously) observable. This, in turn, causes the EKF estimator to become inconsistent. The following describes techniques for addressing this issue.

OC-VINS: Algorithm Description

FIG. 1.1 is a flowchart illustrating an example operation of estimator 22 applying the techniques described here. Although illustrated for purposes of example as sequential, the steps of the flowchart may be performed concurrently. Initially, estimator 22 defines the initial unobservable directions, e.g., computes an initial nullspace from (eq. 55) for the particular system (STEP 50). In one example, the unobservable degrees of freedom comprise translations in horizontal and vertical directions and a rotation about a gravity vector. In another example, such as with respect to use of line features, other degrees of freedom may be unobservable.

Estimator 22 receives IMU data 18 and, based on the IMU data 18, performs propagation by computing updated state estimates and propagating the covariance. At this time, estimator 22 utilizes a modified a state transition matrix to prevent correction of the state estimates along at least one of the unobservable degrees of freedom (STEP 54). In addition, estimator 22 receives image data 14 and updates the state estimates and covariance based on the image data. At this time, estimator 22 uses a modified observability matrix to similarly prevent correction of the state estimates along at least one of the unobservable degrees of freedom (STEP 58). In this example implementation, estimator 22 enforces the unobservable directions of the system, thereby preventing one or more unobservable directions from erroneously being treated as observable after estimation, thereby preventing spurious information gain and reducing inconsistency. In this way, processing unit 20 may more accurately compute state information for VINS 10, such as a pose of the vision-aided inertial navigation system, a velocity of the vision-aided inertial navigation system, a displacement of the vision-aided inertial navigation system based at least in part on the state estimates for the subset of the unobservable degrees of freedom without utilizing state estimates the at least one of the unobservable degrees of freedom.

An example algorithm is set forth below for implementing the techniques in reference to the equations described in further detail herein:

Initialization: Initialization: Compute initial nullspace from (55) while running do    Propagation:       Integrate state equations       Compute nullspace at current time-step from (56)       Compute Φ_(k) from (22)       Modify Φ_(k) using (60) - (62)       Propagate covariance    Update:    for all observed features do       Compute measurement Jacobian from (27)       Modify H using (69)-(74)       Apply filter updated    end for    New landmark initialization:    for all new PFs observed do       Initialize G_({circumflex over (f)}) _(i) ,       Create nullspace block, N_(f) _(i) , for G_({circumflex over (f)}) _(i)       Augment N_(k) with the new sub-block N_(f) _(i)    end for end while

In order to address the EKF VINS inconsistency problem, it is ensured that (51) is satisfied for every block row of {circumflex over (M)} when the state estimates are used for computing Ĥ_(k), and Φ_(k,1), ∀k>0, i.e., it is ensured that Ĥ _(k){circumflex over (Φ)}_(k,1) {circumflex over (N)} ₁=0, ∀k>0.  (53)

One way to enforce this is by requiring that at each time step, {circumflex over (Φ)}_(k) and Ĥ_(k) satisfy the following constraints: {circumflex over (N)} _(k+1)={circumflex over (Φ)}_(k) {circumflex over (N)} _(k)  (54a) Ĥ _(k) {circumflex over (N)} _(k)=0, ∀k>0  (54b) where {circumflex over (N)}_(k), k>0 is computed analytically (see (56)). This can be accomplished by appropriately modifying {circumflex over (Φ)}_(k) and Ĥ_(k).

In particular, rather than changing the linearization points explicitly, the nullspace, {circumflex over (N)}_(k), is maintained at each time step, and used to enforce the unobservable directions. This has the benefit of allowing us to linearize with the most accurate state estimates, hence reducing the linearization error, while still explicitly adhering to the system observability properties.

Nullspace Initialization

The initial nullspace is analytically defined:

$\begin{matrix} {{\hat{N}}_{1} = \begin{bmatrix} 0_{3} & \; & {C\left( I_{{\hat{\overset{\_}{q}}}_{G,{0❘0}}} \right)} & G_{g} \\ 0_{3} & \; & 0_{3} & \; \\ 0_{3} & \; & {- \left\lfloor {G_{{\hat{V}}_{I,{0❘0}}} \times} \right\rfloor} & G_{g} \\ \; & 0_{3} & 0_{3} & \; \\ I_{3} & \; & {- \left\lfloor {G_{p_{I,{0❘0}}} \times} \right\rfloor} & G_{g} \\ I_{3} & \; & {- \left\lfloor {G_{{\hat{f}}_{I,{0❘0}}} \times} \right\rfloor} & G_{g} \end{bmatrix}} & (55) \end{matrix}$ At subsequent time steps, the nullspace is augmented to include sub-blocks corresponding to each new PF in the filter state, i.e.,

$\begin{matrix} {{\hat{N}}_{k} = {\begin{bmatrix} 0_{3} & {{C\left( {{}_{}^{}\left. \overset{\_}{q} \right.\hat{}_{G,{k❘{k - 1}}}^{}} \right)}^{G}g} \\ 0_{3} & 0_{3} \\ 0_{3} & {{- {\,{\,\left\lfloor {}^{G}{{\hat{v}}_{I,{k❘{k - 1}}} \times} \right\rfloor^{G}}}}g} \\ 0_{3} & 0_{3} \\ I_{3} & {{- {\,{\,\left\lfloor {}^{G}{{\hat{p}}_{I,{k❘{k - 1}}} \times} \right\rfloor^{G}}}}g} \\ I_{3} & {{- {\,{\,\left\lfloor {}^{G}{{\hat{f}}_{I,{k❘{k - \ell}}} \times} \right\rfloor^{G}}}}g} \\ \vdots & \vdots \\ I_{3} & {{- {\,{\,\left\lfloor {}^{G}{{\hat{f}}_{N,{k❘{k - \ell^{\prime}}}} \times} \right\rfloor^{G}}}}g} \end{bmatrix}.}} & (56) \end{matrix}$ where the sub-blocks {circumflex over (N)}_(F) _(I) =[I₃−└G_({circumflex over (ƒ)}) _(k|k−l) ×┘G_(g)], are the rows corresponding to the i-th feature in the map, which are a function of the feature estimate at the time-step when it was initialized (k−l).

Modification of the State Transition Matrix Φ

During the covariance propagation step, it is ensured that {circumflex over (N)}_(k+1)={circumflex over (Φ)}_(k){circumflex over (N)}_(k). Note, the constraint on {circumflex over (N)}_(t,k) is automatically satisfied due to the structure of {circumflex over (Φ)}_(k), so we focus on {circumflex over (N)}_(r,k). Note that due to the structure of the matrices Φ_(k) and N_(r,k), the first five block elements of need only be considered while the equality for the remaining ones, i.e., the elements corresponding to the features, are automatically satisfied. Specifically, rewrite (54a) is rewritten element-wise as:

$\begin{matrix} {{\hat{N}}_{r,{k + 1}} = {{{\hat{\Phi}}_{k}\left. {\hat{N}}_{r,k}\Longrightarrow\begin{bmatrix} {{C\left( I_{{\hat{\overset{\_}{q}}}_{G,{{k + 1}❘k}}} \right)}G_{g}} \\ {{- \left\lfloor {G_{{\hat{v}}_{I,{{k + 1}❘k}}} \times} \right\rfloor}G_{g}} \\ {{- \left\lfloor {G_{{\hat{P}}_{I,{{k + 1}❘k}}} \times} \right\rfloor}G_{g}} \end{bmatrix} \right.} = {\begin{bmatrix} \Phi_{11} & \Phi_{12} & 0_{3} & 0_{3} & 0_{3} \\ 0_{3} & I_{3} & 0_{3} & 0_{3} & 0_{3} \\ {\hat{\Phi}}_{31} & {\hat{\Phi}}_{32} & I_{3} & {\hat{\Phi}}_{34} & 0_{3} \\ 0_{3} & 0_{3} & 0_{3} & I_{3} & 0_{3} \\ {\hat{\Phi}}_{51} & {\hat{\Phi}}_{52} & {\delta\; t\; I_{3}} & {\hat{\Phi}}_{54} & I_{3} \end{bmatrix} \cdot}}} & (57) \\ {\mspace{79mu}\begin{bmatrix} {{C\left( I_{{\hat{\overset{\_}{q}}}_{G,{k❘{k - 1}}}} \right)}G_{g}} \\ {{- \left\lfloor {G_{{\hat{V}}_{I,{k❘{k - 1}}}} \times} \right\rfloor}G_{g}} \\ {{- \left\lfloor {G_{{\hat{P}}_{I,{k❘{k - 1}}}} \times} \right\rfloor}G_{g}} \end{bmatrix}} & (58) \end{matrix}$ and collect the constraints resulting from each block row of the above vector. Specifically, from the first block row we have C(I _({circumflex over (q)}) _(g,k+1|k) )G _(g)={circumflex over (Φ)}₁₁ C(I _({circumflex over (q)}) _(G,k|k−1) )G _(g)  (59)

{circumflex over (Φ)}₁₁ *=C(I,k+1|k _({circumflex over (q)}) _(I,k|k−1) )  (60)

The requirements for the third and fifth block rows are {circumflex over (Φ)}₃₁ C(I _({circumflex over (q)}) _(G,k|k−1) )G _(g) =└G _({circumflex over (V)}) _(I,k|k−1) −G _({circumflex over (V)}) _(I,k+1|k) ×┘G _(g)  (61) {circumflex over (Φ)}₅₁ C(I _({circumflex over (q)}) _(G,k|k−1) )G _(g) =└δt ^(G) _({circumflex over (V)}) _(I,k|k−1) −G _({circumflex over (P)}) _(I,k+1|k) ×┘G _(g)  (62) both of which are in the form Au=w, where u and w are nullspace vector elements that are fixed. In order to ensure that (61) and (62) are satisfied, a perturbed A* is found for A=Φ₃₁ and A=Φ₅₁ that fulfills the constraint. To compute the minimum perturbation, A*, of A, the following minimization problem is formulated:

$\begin{matrix} {{\min\limits_{A^{*}}\mspace{14mu}{{A^{*} - A}}_{\mathcal{F}}^{2}},{{{s.t.\mspace{14mu} A^{*}}u} = w}} & (63) \end{matrix}$ where

denotes the Frobenius matrix norm. After employing the method of Lagrange multipliers, and solving the corresponding KKT optimality conditions, the optimal A* that fulfills (63) is A*=A−(Au−w)(u ^(T) u)⁻¹ u ^(T).  (64) Once the modified {circumflex over (Φ)}₁₁*, is computed from (60), and {circumflex over (Φ)}₁₃* and {circumflex over (Φ)}₅₁* from (63) and (64), the corresponding elements of {circumflex over (Φ)}_(k) is updated and the covariance propagation is addressed. Modification of H

During each update step, we seek to satisfy Ĥ_(k){circumflex over (N)}_(k)=0. In turn, this means that Ĥ _(k) {circumflex over (N)} _(t,k)=0  (65) Ĥ _(k) {circumflex over (N)} _(r,k)=0  (66) must both hold. Expressing (65) for a single point we have [see (27) and (52)]

$\begin{matrix} {{{{\hat{H}}_{c}\begin{bmatrix} {\hat{H}}_{\overset{\_}{q}} & 0_{3 \times 9} & {{\hat{H}}_{P}❘{\hat{H}}_{f}} \end{bmatrix}}\begin{bmatrix} 0_{3} \\ 0_{3} \\ 0_{3} \\ 0_{3} \\ I_{3} \\ I_{3} \end{bmatrix}} = 0} & (67) \end{matrix}$ which is satisfied automatically, since Ĥ_(P)=−Ĥ_(ƒ)[see (30) and (31)]. Hence, the nullspace direction corresponding to translation is not violated.

Expanding the second constraint (66), we have

$\begin{matrix} {{{{\hat{H}}_{c}\begin{bmatrix} {\hat{H}}_{\overset{\_}{q}} & 0_{3 \times 9} & {{\hat{H}}_{p}❘{\hat{H}}_{f}} \end{bmatrix}}\begin{bmatrix} {{C\left( {{}_{}^{}\left. \overset{\_}{q} \right.\hat{}_{G,{k❘{k - 1}}}^{}} \right)}{\,^{G}g}} \\ 0_{3} \\ {{- \left\lfloor {{{}_{}^{}\left. v \right.\hat{}_{I,{k❘{k - 1}}}^{}} \times} \right\rfloor}{\,^{G}g}} \\ 0_{3} \\ {{- \left\lfloor {{{}_{}^{}\left. p \right.\hat{}_{I,{k❘{k - 1}}}^{}} \times} \right\rfloor}{\,^{G}g}} \\ {{- \left\lfloor {{{}_{}^{}\left. f \right.\hat{}_{k❘{k - \ell}}^{}} \times} \right\rfloor}{\,^{G}g}} \end{bmatrix}} = 0} & (68) \end{matrix}$

Since Ĥ_(P)=−Ĥ_(ƒ), (68) is equivalent to satisfying the following relationship

$\begin{matrix} {{\begin{bmatrix} {{\hat{H}}_{c}{\hat{H}}_{\overset{\_}{q}}} & {{\hat{H}}_{c}{\hat{H}}_{p}} \end{bmatrix}\begin{bmatrix} {{C\left( {{}_{}^{}\left. \overset{\_}{q} \right.\hat{}_{G,{k❘{k - 1}}}^{}} \right)}{\,^{G}g}} \\ {{\,\left\lfloor {}^{G}{{\hat{f}}_{k❘{k - \ell}} - {{{}_{}^{}\left. p \right.\hat{}_{I,{k❘{k - 1}}}^{}} \times}} \right\rfloor}{\,^{G}g}} \end{bmatrix}} = {{{0\begin{bmatrix} {\hat{H}}_{c\overset{\_}{q}} & {\hat{H}}_{cp} \end{bmatrix}}\begin{bmatrix} {{C\left( {{}_{}^{}\left. \overset{\_}{q} \right.\hat{}_{G,{k❘{k - 1}}}^{}} \right)}{\,^{G}g}} \\ {{\,\left\lfloor {}^{G}{{\hat{f}}_{k❘{k - \ell}} - {{{}_{}^{}\left. p \right.\hat{}_{I,{k❘{k - 1}}}^{}} \times}} \right\rfloor}{\,^{G}g}} \end{bmatrix}} = 0}} & (69) \end{matrix}$ where we have implicitly defined Ĥ_(c q) and Ĥ_(cP) as elements of the Jacobian. This is a constraint of the form Au=0, where u is a function of the nullspace elements, and hence is fixed, while A comprises block elements of the measurement Jacobian. We compute the optimal A* that satisfies (69) using (63) and (64). By direct application of (63), for

$\begin{matrix} {{A = \begin{bmatrix} {\hat{H}}_{c\overset{\_}{q}} & {\hat{H}}_{cp} \end{bmatrix}}{u = \begin{bmatrix} {{C\left( {{}_{}^{}\left. \overset{\_}{q} \right.\hat{}_{G,{k❘{k - 1}}}^{}} \right)}{\,^{G}g}} \\ {{\,\left\lfloor {}^{G}{{\hat{f}}_{k❘{k - \ell}} - {{{}_{}^{}\left. p \right.\hat{}_{I,{k❘{k - 1}}}^{}} \times}} \right\rfloor}{\,^{G}g}} \end{bmatrix}}{w = 0}} & (70) \end{matrix}$ A* is computed as: A*=A−Au(u ^(T) u)⁻¹ u ^(T)  (71)

After computing the optimal A*, the Jacobian elements are recovered as Ĥ _(c q) *=A _(1:2,1:3)*  (72) Ĥ _(cp) *=A _(1:2,4:6)*  (73) Ĥ _(cf) *=−Ĥ _(cp)*  (74) where the subscripts (i:j, m:n) denote the submatrix spanning rows i to j, and columns m to n. Hence the modified observability matrix is Ĥ _(k) *=[Ĥ _(c q) * 0_(2×9) Ĥ _(cP) * Ĥ _(cf)*]  (75)

Having computed the modified measurement Jacobian, the filter update is performed. By following this process, it can be ensured that the EKF estimator 22 does not gain information along the unobservable directions of the system. An overview of one example of the OC-VINS modified EKF estimator is presented in Algorithm 1.

As the camera-IMU platform (VINS 10) moves into new environments, new features are added to the map constructed within VINS 24. This entails intersecting the bearing measurements from multiple camera observations to obtain an initial estimate of each new feature's 3D location, as well as computing the initial covariance and cross-correlation between the new landmark estimate and the state. This can be solved as a minimization problem over a parameter vector x=[x_(s,1) ^(t) . . . x_(s,m) ^(T)|ƒ^(T)]^(T), where x_(s,i), i=1 . . . m, are the m camera poses which the new landmark, f, was observed from. Specifically, the following is minimized:

$\begin{matrix} {{{C(x)} = {\frac{1}{2}\left\{ {{{\left( {x - \hat{x}} \right)^{T}\begin{bmatrix} P_{ss}^{- 1} & 0 \\ 0 & 0 \end{bmatrix}}\left( {x - \hat{x}} \right)} +_{i}^{\sum}{\left( {z_{i} - {h(x)}} \right)^{T}{R_{i}^{- 1}\left( {z_{i} - {h(x)}} \right)}}} \right\}}},} & (76) \end{matrix}$ where P_(ss) ⁻¹ is the information matrix (prior) of the state estimates across all poses obtained from the filter, and we have no initial information about the feature location (denoted by the block (2,2) element of the prior information being equal to zero). The m measurements z_(i), i=1 . . . m are the perspective projection observations of the point. Stochastic cloning over m time steps are employed to ensure that the cross-correlation between the camera poses are properly accounted for.

An initial guess for the landmark location is obtained using any intersection method, and then (76) is iteratively minimized. At each iteration, the following linear system of equations is solved:

$\begin{matrix} \begin{matrix} {{\begin{bmatrix} {P_{ss}^{- 1} + {H_{8}^{T}R^{- 1}H_{8}}} & {H_{s}^{T}R^{- 1}H_{f}} \\ {H_{f}^{T}R^{- 1}H_{8}} & {H_{f}^{T}R^{- 1}H_{f}} \end{bmatrix}\left\lbrack {\quad\begin{matrix} {\overset{\sim}{x}}_{s} \\ {\overset{\sim}{x}}_{f} \end{matrix}} \right\rbrack} = \left. {\left\lbrack \begin{matrix} {H_{s}^{T}R^{- 1}} \\ {H_{f}^{T}R^{- 1}} \end{matrix} \right\rbrack\overset{\sim}{z}}\leftrightarrow{\begin{bmatrix} A & U \\ V & C \end{bmatrix}\overset{\sim}{x}} \right.} \\ {= {\left\lbrack \begin{matrix} P \\ Q \end{matrix} \right\rbrack\overset{\sim}{z}}} \end{matrix} & (77) \end{matrix}$

Applying the Sherman-Morrison-Woodbury matrix identity, we solve the system by inverting the matrix on the left-hand side as

$\begin{matrix} {\mspace{79mu}{{\begin{bmatrix} A & U \\ V & C \end{bmatrix}^{1} = \begin{bmatrix} \gamma_{1} & \gamma_{2} \\ \gamma_{3} & \gamma_{4} \end{bmatrix}}\mspace{79mu}{where}}} & (78) \\ \begin{matrix} {Y_{1} = \left( {A - {{UC}^{- 1}V}} \right)^{- 1}} \\ {= {P_{ss} - {P_{ss}{H_{s}^{T} \cdot \left\{ {M^{- 1} - {M^{- 1}{H_{f}\left( {H_{f}^{T}M^{- 1}H_{f}} \right)}^{- 1}H_{f}^{T}M^{- 1}}} \right\}}H_{s}P_{ss}}}} \end{matrix} & (79) \\ {\mspace{79mu}\begin{matrix} {Y_{2} = Y_{3}^{T}} \\ {= {{- \left( {A - {{UC}^{- 1}V}} \right)^{- 1}}{UC}^{- 1}}} \\ {= {{- P_{ss}}H_{s}^{T}M^{- 1}{H_{f}\left( {H_{f}^{T}M^{- 1}H_{f}} \right)}^{- 1}}} \end{matrix}} & (80) \\ {\mspace{79mu}\begin{matrix} {Y_{4} = {{C^{- 1}{V\left( {A - {{UC}^{- 1}V}} \right)}^{- 1}{UC}^{- 1}} + C^{- 1}}} \\ {= {\left( {H_{f}^{T}M^{- 1}H_{f}} \right)^{- 1}.}} \end{matrix}} & (81) \end{matrix}$ Here, M=H_(s)P_(ss)H_(s) ^(T)+R. During each iteration, the parameter vector is updated as

$\begin{matrix} {x^{\oplus} = {x^{\ominus} + {{\begin{bmatrix} A & U \\ V & C \end{bmatrix}^{- 1}\begin{bmatrix} P \\ Q \end{bmatrix}}\overset{\sim}{z}}}} & (82) \end{matrix}$ After the minimization process converges, the posterior covariance of the new state (including the initialized feature) is computed as:

$\begin{matrix} {{P^{\oplus} = \begin{matrix} A & U^{- 1} \\ V & C \end{matrix}},} & (83) \end{matrix}$ where each element is defined from (79)-(80). Simulations

Monte-Carlo simulations were conducted to evaluate the impact of the proposed Observability-Constrained VINS (OC-VINS) method on estimator consistency. The proposed methodology was applied to two VINS systems: (i) Visual Simultaneous Localization and Mapping (V-SLAM), and (ii) the Multi-state Constraint Kalman Filter (MSC-KF), which performs visual-inertial localization without constructing a map.

Simulation 1: Application of the Proposed Framework to V-SLAM

In this section, the results of applying the proposed OC-VINS techniques to V-SLAM (referred to as OC-V-SLAM) are described. The Visual Simultaneous Localization and Mapping (V-SLAM) paradigm refers to a family of algorithms for fusing inertial measurements with visual feature observations. In V-SLAM, the current IMU pose, as well as the 3D positions of all visual landmarks are jointly estimated. The performance of OC-SLAM described herein is compared to the standard V-SLAM (Std-V-SLAM), as well as the ideal V-SLAM that linearizes about the true state. Specifically, the Root Mean Squared Error (RMSE) and Normalized Estimation Error Squared (NEES) were computed over 20 trials in which the camera-IMU platform traversed a circular trajectory of radius 5 m at an average velocity of 60 cm/s. The camera had 45 deg field of view, with σ_(px)=1px, while the IMU was modeled after MEMS quality sensors. The camera observed visual features distributed on the interior wall of a circumscribing cylinder with radius 6 m and height 2 m (see FIG. 2C). The effect of inconsistency during a single run is depicted in FIG. 2 f. The error and corresponding 3σ bounds of uncertainty are plotted for the rotation about the gravity vector. It is clear that the Std-V-SLAM gains spurious information, hence reducing its 3σ bounds of uncertainty, while the Ideal-V-SLAM and the OC-V-SLAM do not. The Std-V-SLAM becomes inconsistent on this run as the orientation errors fall outside of the uncertainty bounds, while both the Ideal-V-SLAM and the OC-V-SLAM remain consistent. FIG. 2 also displays the RMSE and NEES plots, in which it is observed that the OC-V-SLAM attains orientation accuracy and consistency levels similar to the Ideal-V-SLAM, while significantly outperforming the Std-V-SLAM. Similarly, the OC-V-SLAM obtains better positioning accuracy compared to the Std-V-SLAM.

Simulation 2: Application of the Proposed Framework to MSC-KF

The OC-VINS methodology described herein was applied to the MSC-KF (referred herein as “OC-MSC-KF”). In the MSC-KF framework, all the measurements to a given OF are incorporated during a single update step of the filter, after which each OF is marginalized. Hence, in the OC-MSC-KF, the sub-blocks of the nullspace corresponding to the features [i.e., N_(f) _(i) , i=1, . . . , N, see (56)] are not maintained. Instead, only the portion of the nullspace corresponding to the state of VINS 10 is propagated forward, and the feature nullspace block for each feature is formed only when it is processed in an update.

Monte-Carlo simulations were conducted to evaluate the consistency of the proposed method applied to the MSC-KF. Specifically, the standard MSC-KF (Std-MSC-KF) was compared with the Observability-Constrained MSC-KF (OC-MSC-KF), which is obtained by applying the methodology described herein, as well as the Ideal-MSC-KF, whose Jacobians are linearized at the true states, which were used as a benchmark. The RMSE and NEES were evaluated over 30 trials (see FIGS. 3( a)-3(d)) in which the camera-IMU platform traversed a circular trajectory of radius 5 m at an average speed of 60 cm/s, and 50 randomly distributed features per image were observed. As evident, the OC-MSC-KF outperforms the Std-MSC-KF and attains performance almost indistinguishable from the Ideal-MSC-KF in terms of RMSE and NEES.

EXPERIMENTAL RESULTS

The proposed OC-VINS framework were also validated experimentally and compared with standard VINS approaches. Specifically, the performance of OC-V-SLAM and OC-MSC-KF were evaluated on both indoor and outdoor datasets. In the experimental setup, a light-weight sensing platform comprised of an InterSense NavChip IMU and a PointGrey Chameleon camera (see FIG. 4( a)) was utilized. IMU signals are sampled at a frequency of 100 Hz while camera images are acquired at 7.5 Hz. The dimensions of the sensing package in this example are approximately 6 cm tall, by 5 cm wide, by 8 cm deep.

During the indoor experimental tests, the sensing platform was mounted on an Ascending Technologies Pelican quadrotor equipped with a VersaLogic Core 2 Duo single board computer. For the outdoor dataset, the sensing platform was head-mounted on a bicycle helmet, and interfaced to a handheld Sony Vaio. An overview of the system implementation is described, along with a discussion of the experimental setup and results.

Example Implementation

The image processing is separated into two components: one for extracting and tracking short-term opportunistic features (OFs), and one for extracting persistent features (PFs) to use in V-SLAM.

OFs are extracted from images using the Shi-Tomasi corner detector. After acquiring image k, it is inserted into a sliding window buffer of m images, {k−m+1, k−m+2, . . . , k}. We then extract features from the first image in the window and track them pairwise through the window using the KLT tracking algorithm. To remove outliers from the resulting tracks, we use a two-point algorithm to find the essential matrix between successive frames. Specifically, given the filter's estimated rotation (from the gyroscopes' measurements) between image i and j,

, we estimate the essential matrix from only two feature correspondences. This approach is more robust than the five-point algorithm because it provides two solutions for the essential matrix rather than up to ten. Moreover, it requires only two data points, and thus it reaches a consensus with fewer hypotheses when used in a RANSAC framework.

The PFs are extracted using SIFT descriptors. To identify global features observed from several different images, we first utilize a vocabulary tree (VT) structure for image matching. Specifically, for an image taken at time k, the VT is used to select which image(s) taken at times 1, 2, . . . , k−1 correspond to the same physical scene. Among those images that the VT reports as potential matches, the SIFT descriptors from each of them are compared to those from image k to create tentative feature correspondences. The epipolar constraint is then enforced using RANSAC and Nister's five-point algorithm to eliminate outliers. It is important to note that the images used to construct the VT (offline) are not taken along our experimental trajectory, but rather are randomly selected from a set of representative images.

Experiment 1 Indoor Validation of OC-V-SLAM

In the first experimental trial, we compared the performance of OC-V-SLAM to that of Std-V-SLAM on an indoor trajectory. The sensing platform traveled a total distance of 172.5 m, covering three loops over two floors in Walter Library at the University of Minnesota. The quadrotor was returned to its starting location at the end of the trajectory, to provide a quantitative characterization of the achieved accuracy.

Opportunistic features were tracked using a window of m=10 images. Every m camera frames, up to 30 features from all available PFs are initialized and the state vector is augmented with their 3D coordinates. The process of initializing PFs is continued until the occurrence of the first loop closure; from that point on, no new PFs are considered and the filter relies upon the re-observation of previously initialized PFs and the processing of OFs.

For both the Std-V-SLAM and the OC-V-SLAM, the final position error was approximately 34 cm, which is less than 0.2% of the total distance traveled (see FIG. 5). However, the estimated covariances from the Std-V-SLAM are smaller than those from the OC-V-SLAM (see FIGS. 6( a)-6(b)). Furthermore, uncertainty estimates from the Std-V-SLAM decreased in directions that are unobservable (i.e., rotations about the gravity vector); this violates the observability properties of the system and demonstrates that spurious information is injected to the filter.

FIG. 6( a) highlights the difference in estimated yaw uncertainty between the OC-V-SLAM and the Std-V-SLAM. In contrast to the OC-V-SLAM, the Std-V-SLAM covariance rapidly decreases, violating the observability properties of the system. Similarly, large differences can be seen in the covariance estimates for the x-axis position estimates (see FIG. 6( b)). The Std-V-SLAM estimates a much smaller uncertainty than the OC-V-SLAM, supporting the claim that the Std-V-SLAM tends to be inconsistent.

Experiment 2 Indoor Validation of OC-MSC-KF

The proposed OC-MSC-KF was validated on real-world data. The first test comprised a trajectory 50 m in length that covered three loops in an indoor area, after which the testbed was returned to its initial position. At the end of the trajectory, the Std-MSC-KF had a position error of 18.73 cm, while the final error for the OC-MSC-KF was 16.39 cm (approx. 0.38% and 0.33% of the distance traveled, respectively). In order to assess the impact of inconsistency on the orientation estimates of both methods, the rotation between the first and last images computed independently using Batch Least-Squares (BLS) and feature point matches was used as ground truth. The Std-MSC-KF had final orientation error [0.15 −0.23 −5.13] degrees for roll, pitch, and yaw (rpy), while the rpy errors for the OC-MSC-KF were [0.19 −0.20 −1.32] degrees respectively.

In addition to achieving higher accuracy, for yaw in particular, the OC-MSC-KF is more conservative since it strictly adheres to the unobservable directions of the system. This is evident in both the position and orientation uncertainties. The y-axis position and yaw angle uncertainties is plotted in FIG. 7, as representative results. Most notably, the yaw uncertainty of the OC-MSC-KF remains approximately 1.13 deg (3σ), while for the Std-MSC-KF it reduces to 0.87 deg (3σ). This indicates that the Std-MSC-KF gains spurious orientation information, which leads to inconsistency. Lastly, FIG. 8 shows the 3D trajectory along with an overhead (x-y) view. It is evident that the Std-MSC-KF yaw error impacts the position accuracy, as the Std-MSC-KF trajectory exhibits a rotation with respect to the OC-MSC-KF.

Experiment 3 Outdoor Validation of OC-MSC-KF

In the final experimental trial, the OC-MSC-KF was tested on a large outdoor dataset (approx. 1.5 km in length). FIG. 9( a) depicts the OC-MSC-KF (red) and the Std-MSC-KF (blue) trajectory estimates, along with position markers from a low-grade onboard GPS receiver (green). In order to assess the accuracy of both filters, the estimates are overlaid on an overhead image.

FIG. 9( b) depicts a zoomed-in plot of the starting location (center) for both filters, along with the final position estimates. In order to evaluate the accuracy of the proposed method, the sensing platform was returned to its starting location at the end of the trajectory. The OC-MSC-KF obtains a final position error of 4.38 m (approx. 0.3% of the distance traveled), while the Std-MSC-KF obtains a final position error of 10.97 m. This represents an improvement in performance of approximately 60%.

The filters' performance is also illustrated visually in FIG. 9( c) which shows a zoomed-in plot of the turn-around point. The OC-MSC-KF estimates remain on the light-brown portion of the ground (which is the sidewalk), which coincides with the true trajectory. In contrast, the Std-MSC-KF estimates drift over the dark triangles in the image, which are wading pools filled with water. This shifting of the trajectory represents a slight rotation around the vertical axis, indicating a violation of the rotation nullspace direction N_(r).

FIG. 10 depicts the uncertainty in the position estimates along the x-axis (perpendicular to the direction of motion), along with the uncertainty in yaw (corresponding to rotations about the gravity vector). In particular, FIG. 10( a) illustrates position uncertainty along the x-axis (perpendicular to the direction of motion) for the Std-MSC-KF, and OC-MSC-KF respectively. The OC-MSC-KF maintains more conservative estimates for position, indicating that the Std-MSC-KF may be inconsistent. FIG. 10( b) illustrates orientation uncertainty about the vertical axis (z). Since rotations about gravity are unobservable, the Std-MSC-KF should not gain any information in this direction. However, as evident from this plot, the Std-MSC-KF uncertainty reduces, indicating inconsistency. For the OC-MSC-KF, the uncertainty does not decrease, indicating that the OC-MSC-KF respects the unobservable system directions. It is clear that the Std-MSC-KF reduces its uncertainty in its heading direction, indicating that the filter gains spurious information, while the OC-MSC-KF does not gain information for the rotation around the gravity vector.

Camera Navigation Using Point and Plane Features

As explained above, over a short period of time, all six degrees of freedom of a robot's position and orientation (pose) can be obtained directly by integrating the rotational velocity and linear acceleration measurements from an Inertial Measurement Unit (IMU). However, due to the biases and noise in the IMU signals, errors in the robot pose estimates accumulate quickly over time rendering them unreliable. To deal with this problem, most inertial navigation systems (INS) rely on GPS for bounding the estimation error. Unfortunately, for robots operating in urban or indoor environments, the GPS signals are usually either unreliable or unavailable.

Compared to regular cameras, RGBD cameras provide both color images and the corresponding 3D point cloud, which simplifies the tasks of triangulating point-feature positions and extracting higher level features, such as planes, from the scene. To date, very few works exist that combine inertial and RGBD measurements for navigation. When using IMU and only point feature measurements, one degree of rotational freedom (yaw) of the IMU-RGBD camera is unobservable. As a result, the uncertainty and error in the yaw estimates will keep increasing, hence, adversely affecting the positioning accuracy. In this disclosure, it is demonstrated that by observing plane features of known directions, the yaw becomes observable and, thus, its uncertainty remains bounded.

In this section, a linear-complexity inertial navigation algorithm is presented that uses both point and plane features. In particular, system observability properties, including its observable modes and unobservable directions, are described. In example implementations, point feature measurements are processed using a tightly-coupled visual-inertial odometry, multi-state constraint Kalman filter (MSC-KF), with complexity linear in the number of observed point features. Additionally, the directions of the plane features are used as measurements in the extended Kalman filter update without including the plane feature poses in the state vector, hence ensuring linear complexity in the number of the observed plane features.

The observability of the IMU-RGBD camera navigation system when using both point and plane feature measurements is described, and it is proved that with a single plane feature of known direction, the IMU gyroscope bias is observable. If additionally a single point feature is detected, and the plane's normal vector is not aligned with gravity, all degrees of freedom of the IMU-RGBD camera navigation system, except the global position, become observable. Based on the observability analysis, the accuracy and consistency of the IMU-RGBD camera navigation system is improved by employing the observability-constrained extended Kalman filter that enforces the observability requirement. A linear-complexity algorithm for fusing inertial measurements with both point and plane features is presented and experimentally validated.

The rest of this section is structured as follows. First, the inertial navigation system model using both point and plane feature measurements is presented. A methodology for studying the observability properties of unobservable nonlinear systems is described. The method is applied to the specific IMU-RGBD camera navigation system, and its unobservable directions are described. The OC-EKF algorithm developed for improving the accuracy and consistency of the inertial navigation system based on its observability properties is presented. Experimental results for the performance of the proposed algorithm are described and assessed.

VINS Estimator Description

In this section, the system state and covariance propagation equations using inertial measurements are described. The measurement model for processing plane and point feature observations is presented.

System State and Propagation Model

In the IMU-RGBD camera navigation system, the state vector to be estimated can be represented as: x=[ ^(I) q _(G) ^(T G) v _(I) ^(T G) p _(I) ^(T G) p _(ƒ) ^(T) b _(a) ^(T) b _(g) ^(T)]^(T) where Iq_(G) is the unit quaternion representing the orientation of the global frame {G} in the IMU's frame of reference {I}, Gv_(I) and Gp_(I) represent the velocity and position of {I} in {G}, Gp_(ƒ) denotes the position of the point feature in {G}, b_(a) and b_(g) represent the gyroscope and accelerometer biases.

The system model describing the time evolution of the states can be represented as:

$\begin{matrix} \begin{matrix} {{I{{\overset{.}{q}}_{G}(t)}} = {\frac{1}{2}{\Omega\left( {I_{\omega}(t)} \right)}^{I}{q_{G}(t)}}} \\ {{G{{\overset{.}{V}}_{i}(t)}} = {G_{a}(t)}} \\ {{G{{\overset{.}{p}}_{I}(t)}} = {{{{Gv}_{I}(t)}G{{\overset{.}{p}}_{f}(t)}} = 0_{3 \times 1}}} \\ {{{\overset{.}{b}}_{a}(t)} = {{w_{\omega\; a}{{\overset{.}{b}}_{g}(t)}} = w_{\omega\; g}}} \end{matrix} & \left( {A{.1}} \right) \end{matrix}$ where Iω(t)=[ω₁ ω₂ ω₃]^(T) and Ga(t)=[a₁ a₂ a₃]^(T) are the system rotational velocity and linear acceleration expressed in {I} and {G}respectively, w_(wa) and w_(wg) are zero-mean white Gaussian noise processes driving the gyroscope and accelerometer biases b_(g) and b_(a), ^(G)g is the gravitational acceleration in {G}, C(Iq_(G)(t)) denotes the rotation matrix corresponding to Iq_(G)(t), and

$\begin{matrix} {{{\Omega\left( {I\;{\omega(t)}} \right)}\overset{\bigtriangleup}{=}\begin{bmatrix} {- \left\lfloor I_{\omega} \right\rfloor} & I_{\omega} \\ {- I_{\omega^{T}}} & 0 \end{bmatrix}},{\left\lfloor I_{\omega} \right\rfloor\overset{\bigtriangleup}{=}{\begin{bmatrix} 0 & {- \omega_{3}} & \omega_{2} \\ {- \omega_{3}} & 0 & {- \omega_{1}} \\ {- \omega_{2}} & \omega_{1} & 0 \end{bmatrix}.}}} & \; \end{matrix}$

The gyroscope and accelerometer measurements, ω_(m) and a_(m), are modeled as: ω_(m)(t)=^(I)ω(t)+b _(g) +w _(g)(t)  (A.2) a _(m)(t)=C(^(I) q _(G)(t))(^(G) a(t)−^(G) g)+b _(a) +w _(a)(t)  (A.3) where w_(g) and w_(a) are zero-mean, white Gaussian noise processes. In order to determine the covariance propagation equation, we define the error-state vector as: {tilde over (x)}=[ ^(I)δθ_(G) ^(T G) {tilde over (V)} _(I) ^(T G) {tilde over (p)} _(I) ^(T G) {tilde over (p)} _(ƒ) ^(T) {tilde over (b)} _(a) ^(T) {tilde over (b)} _(g) ^(T)]^(T)  (A.4)

Then, the linearized continuous-time error-state equation can be written as: {tilde over ({dot over (x)})}=F _(c) {tilde over (x)}+G _(c) w  (A.5) where w=[w_(g) ^(T) w_(wg) ^(T) w_(a) ^(T) w_(wa) ^(T)]^(T) denotes the system noise, F_(c) is the continuous-time error-state transition matrix corresponding to the system state, and G_(c) is the continuous-time input noise matrix. The system noise is modelled as a zero-mean white Gaussian process with autocorrelation

[w(t)w^(T)(τ)]=Q_(c)δ(t−τ). To compute the propagated covariance, the discrete-time state transition matrix from time t_(k) to t_(k+1), Φ_(k) is found, and the system noise covariance matrix, Q_(k), which can been computed as: Φ_(k)=Φ(t _(k+1) ,t _(k))=exp(∫_(t) _(k) ^(t) ^(k+1) F _(c)(τ)dτ)  (A.6) Q _(k)=∫_(t) _(k) ^(t) ^(k=1) Φ(t _(k+1),τ)G _(c) Q _(c) G _(c) ^(T)Φ^(T)(t _(k+1),τ)dτ  (A.7) The propagated covariance can be determined as: P _(K+1|k)=Φ_(k) P _(k|k)Φ_(k) ^(T) +Q _(k)  (A.8)

Measurement Model for Plane Features

For purposes of example, the IMU frame {I} and the RGBD-camera frame {C} are assumed to coincide. Let ^(G)n denote the normal vector to a plane, whose direction is assumed known in the global frame of reference, and thus we need not include it in the state vector. Planes are fitted in the 3D point cloud provided by the RGBD camera, and its normal vector, z_(plane), is used as the plane feature measurement: z _(plane) =C(η_(θ))^(I) n=C(η_(θ))C(^(I) q _(G))^(G) n  (A.9) where η_(θ)=ak is the measurement noise representing a rotation by an angle α around the unit vector k. Since ^(G)n is a unit norm vector, the measurement noise is modelled as an extra rotation of the plane's normal vector. Moreover, in order to avoid a singular representation of the noise covariance when processing this observation in the EKF, introduce the following modified measurement model is introduced:

$\begin{matrix} {z_{plane}^{\prime} = \begin{bmatrix} {{z_{plane}(1)}/{z_{plane}(3)}} \\ {{z_{plane}(2)}/{z_{plane}(3)}} \end{bmatrix}} & \left( {A{.10}} \right) \end{matrix}$ and the linearized error model is computed as: {tilde over (z)}′ _(plane) =z′ _(plane) −{circumflex over (z)}′ _(plane) ≃H _(plane) {tilde over (x)}+η _(plane)  (A.11) where {circumflex over (z)}′_(plane) is the expected measurement computed by evaluating (A.10) at the current state estimate and η_(θ)=0, η_(plane) is the measurement noise, and the measurement Jacobian, H_(plane), is computed using the chain rule as: H _(plane) =H _(c) [H _(θ) ₁ 0_(3×15)]  (A.12) where

$\begin{matrix} {\begin{matrix} {H_{c} = \frac{\partial z_{plane}^{\prime}}{\partial I_{n}}} \\ {= {\frac{1}{{{\hat{z}}_{plane}(3)}^{2}}\begin{bmatrix} {{\hat{z}}_{plane}(3)} & 0 & {- {{\hat{z}}_{plane}(1)}} \\ 0 & {{\hat{z}}_{plane}(3)} & {- {{\hat{z}}_{plane}(2)}} \end{bmatrix}}} \end{matrix}{H_{\theta_{1}} = {\frac{\partial^{I}n}{\partial^{I}{\hat{\theta}}_{G}} = \left\lfloor {{C\left( {{}_{}^{}\left. q \right.\hat{}_{}^{}} \right)}^{G}n} \right\rfloor}}} & \left( {A{.13}} \right) \end{matrix}$

Measurement Model for Point Features

The RGBD camera can directly measure the 3D position of a point feature ^(I)p_(ƒ) in the IMU frame {I} as: z _(point)=^(I) p _(ƒ)+η_(point) =C(^(I) q _(G))(^(G) p _(ƒ)−^(G) p _(I))+η_(point)  (A.14) The linearized error model is computed as: {tilde over (z)} _(point) =z _(point) −{circumflex over (z)} _(point) ≃H _(point) {tilde over (X)}+η _(point)  (A.15) where {tilde over (z)}_(point) is the expected measurement computed by evaluating (14) at the current state estimate and η_(point), while the measurement Jacobian, H_(point), is H _(point) =[H _(θ) ₂ 0_(3×3) H _(p) H _(p) _(ƒ) 0_(3×6)]  (A.16) where

$H_{\theta_{2}} = {\frac{\partial z_{point}}{\partial{{}_{}^{}{}_{}^{}}} = \left\lfloor {{C\left( {{}_{}^{}\left. q \right.\hat{}_{}^{}} \right)}\left( {{{}_{}^{}\left. p \right.\hat{}_{}^{}} - {{}_{}^{}\left. p \right.\hat{}_{}^{}}} \right)} \right\rfloor}$ ${H_{p} = {\frac{\partial z_{point}}{\partial^{G}p} = {- {C\left( {{}_{}^{}\left. q \right.\hat{}_{}^{}} \right)}}}},{H_{p_{f}} = {\frac{\partial z_{point}}{\partial^{G}p_{f}} = {C\left( {{}_{}^{}\left. q \right.\hat{}_{}^{}} \right)}}}$

Observability Analysis

In this section, a brief overview of the method for analyzing the observability of nonlinear systems is provided, and an extension for determining the unobservable directions of nonlinear systems is presented.

Observability Analysis with Lie Derivatives

Consider a nonlinear, continuous-time system:

$\begin{matrix} \left\{ \begin{matrix} {x = {{f_{0}(x)} + {\sum\limits_{i = 1}^{l}{{f_{i}(x)}u_{i}}}}} \\ {y = {h(x)}} \end{matrix} \right. & \left( {A{.17}} \right) \end{matrix}$ where u=[u₁ . . . u_(l)]^(T) is its control input, x=[x₁ . . . x_(m)]^(T) is the system's state vector, y is the system output, and ƒ_(i), i=0, . . . , l are the process functions. The zeroth-order Lie derivative of a measurement function h is defined as the function itself:

⁰ h=h(x)  (A.18) and the span of the ith order Lie derivative is defined as:

$\begin{matrix} {{{\nabla\mathcal{L}^{i}}h} = \begin{bmatrix} \frac{{\partial\mathcal{L}^{i}}h}{\partial x_{1}} & \frac{{\partial\mathcal{L}^{i}}h}{\partial x_{2}} & \ldots & \frac{{\partial\mathcal{L}^{i}}h}{\partial x_{m}} \end{bmatrix}} & \left( {A{.19}} \right) \end{matrix}$

For any ith order Lie derivative,

^(i)h, the i+1th order Lie derivative

_(ƒ) _(j) ^(i+1)h with respect to any process function ƒ_(i) can be computed as:

_(ƒ) _(j) ^(i+1) h=∇

^(i) h·ƒ _(j)  (A.20)

Finally, the observability matrix

of system (A.17) is defined as a matrix with block rows the span of the Lie derivatives of (A.17), i.e.,

$\begin{matrix} {{??} = \begin{bmatrix} {{\nabla\mathcal{L}^{0}}h} \\ {{\nabla\mathcal{L}_{f_{i}}^{1}}h} \\ {{\nabla\mathcal{L}_{f_{i}f_{j}}^{2}}h} \\ {{\nabla\mathcal{L}_{f_{i}f_{j}f_{k}}^{2}}h} \\ \vdots \end{bmatrix}} & \left( {A{.21}} \right) \end{matrix}$ where i, j, k=0, . . . , l. To prove that a system is observable, it suffices to show that any submatrix of

comprising a subset of its rows is of full column rank. In contrast, to prove that a system is unobservable and find its unobservable directions, we need to: (i) show that the infinitely many block rows of can be written as a linear combination of a subset of its block rows, which form a submatrix

′; and (ii) find the nullspace of

′ in order to determine the system's unobservable directions. Although accomplishing (ii) is fairly straightforward, achieving (i) is extremely challenging especially for high-dimensional systems, such as the IMU-RGBD camera navigation system.

Observability Analysis with Basis Functions

To address this issue, techniques are leveraged in the observability analysis, which relies on change of variables for proving that a system is unobservable and finding its unobservable directions.

Theorem 1: Assume that there exists a nonlinear transformation β(x)=[β₁(x)^(T) . . . β_(t)(x)^(T)]^(T) (i.e., a set of basis functions) of the variable x in (A.17), such that:

-   -   (A1) h(x)=h′(β) is a function of β.

$\begin{matrix} {{\frac{\partial\beta}{\partial x} \cdot f_{i}},} & \left( {A\; 2} \right) \end{matrix}$ i=0, . . . , l, are functions of β;

-   -   (A3) β is a function of the variables of a set S comprising Lie         derivatives of system (17) from order zero up to order p, with         p<∞.

Then:

-   -   (i) The observability matrix of (17) can be factorized as:         =Ξ·B, where

$B\overset{\Delta}{=}\frac{\partial\beta}{\partial x}$ and Ξ is the observability matrix of the following system:

-   -   (ii)

$\begin{matrix} \left\{ {{{\begin{matrix} {\overset{.}{\beta} = {{g_{0}(\beta)} + {\sum\limits_{i = 1}^{l}{{g_{i}(\beta)}u_{i}}}}} \\ {y = {h^{\prime}(\beta)}} \end{matrix}{where}{g_{i}(\beta)}}\overset{\Delta}{=}{\frac{\partial\beta}{\partial x}{f_{i}(x)}}},{i = 0},{{\ldots\mspace{14mu} l}..}} \right. & \left( {A{.22}} \right) \end{matrix}$

-   -   (iii) System (A.22) is observable.     -   (iv) Null (         )=null(B).

Proof: The proof is given in C. X. Guo and S. I. Roumeliotis, “IMU-RGBD camera 3d pose estimation and extrinsic calibration: Observability analysis and consistency improvement,” in Proc. of the IEEE International Conference on Robotics and Automation, Karlsruhe, Germany, May 6-10 2013, pp. 2920-2927, incorporated herein by reference.

Based on Theorem 1, the unobservable directions can be determined with significantly less effort. To find a system's unobservable directions, we first need to define the basis functions that satisfy conditions (A1) and (A3), and verify that condition (A2) is satisfied, or equivalently that the basis function set is complete. Once all the conditions are fulfilled, the unobservable directions of (A. 17) correspond to the nullspace of matrix B, which has finite dimensions, and thus it is easy to analyze.

Observability Analysis of the IMU-RGBD Camera Navigation System

In this section, Theorem 1 is leveraged to study the observability of the IMU-RGBD camera navigation system when using plane and point feature observations. To do this, the system's basis functions are found, which are also the observable modes, using only a single plane feature. Then, the basis function set for the IMU-RGBD camera navigation system is completed using both plane and point features. Finally, the unobservable directions of the IMU-RGBD camera navigation system when using only plane observations is found, and when using both plane and point feature measurements.

Basis Functions when Using Plane Features

For purposes of example, the orientation between the IMU frame {I} and the global frame {G} are expressed using the Cayley-Gibbs-Rodriguez parameters, ^(I)S_(G). Furthermore, we retain only a few of the subscripts and superscripts in the state vector which is expressed as: x=[S ^(T) v ^(T) p ^(T) p _(ƒ) ^(T) b _(a) ^(T) b _(g) ^(T)]^(T) Employing the propagation model, the IMU-RGBD camera navigation system using only plane features can be written as:

$\begin{matrix} {{\begin{bmatrix} \overset{.}{s} \\ \overset{.}{v} \\ \overset{.}{p} \\ {\overset{.}{p}}_{f} \\ {\overset{.}{b}}_{a} \\ {\overset{.}{b}}_{g} \end{bmatrix} = {\begin{bmatrix} {{- \frac{1}{2}}{Db}_{g}} \\ {g - {C^{T}b_{a}}} \\ v \\ 0 \\ 0 \\ 0 \end{bmatrix} + {\begin{bmatrix} {\frac{1}{2}D} \\ 0 \\ 0 \\ 0 \\ 0 \\ 0 \end{bmatrix}w} + {\begin{bmatrix} 0 \\ C^{T} \\ 0 \\ 0 \\ 0 \\ 0 \end{bmatrix}a}}}{z_{plane} = {C^{G}n}}} & \left( {A{.23}} \right) \end{matrix}$ where C

C(s) represents the rotation matrix corresponding to s, and

$D\overset{\Delta}{=}{{2\frac{\partial s}{\partial\theta}} = {I + \left\lfloor {s \times} \right\rfloor + {{ss}^{T}.}}}$ Note that ƒ₀ is a 18×1 vector, while ƒ₁ and ƒ₂ are both 18×3 matrices which is a compact way for representing three process functions: ƒ₁ω=ƒ₁₁ω₁+ƒ₁₂ω₂+ƒ₁₃ω₃ ƒ₂ a=ƒ ₂₁ a ₁+ƒ₂₂ a ₂+ƒ₂₃ a ₃  (A.24) To define the basis functions for this system, the conditions of Theorem 1 are followed: (i) Select basis functions so that the measurement function z_(plane) can be expressed as a function of β; (ii) Select the remaining basis functions as functions of the system's Lie derivatives, until condition (A2), (i.e.,

$\frac{\partial\beta}{\partial x} \cdot f_{1}$ is a function of β for any i), is satisfied by all the basis functions.

For this particular problem, the first set of basis functions are defined directly as the measurement function: β₁

z _(plane) =C ^(G) n  (A.25) where β₁ is a 3×1 vector representing in a compact form 3 basis functions. To check if condition (A2) of Theorem 1 is fulfilled, compute the span of β₁ is computed with respect to x

$\begin{matrix} {\frac{\partial\beta_{1}}{\partial x} = \begin{bmatrix} {\frac{\partial\beta_{1}}{\partial\theta}\frac{\partial\theta}{\partial s}} & \frac{\partial\beta_{1}}{\partial v} & \frac{\partial\beta_{1}}{\partial p} & \frac{\partial\beta_{1}}{\partial p_{f}} & \frac{\partial\beta_{1}}{\partial b_{a\;}} & \frac{\partial\beta_{1}}{\partial b_{g}} \end{bmatrix}} \\ {= \begin{bmatrix} {\left\lfloor {C^{G}n} \right\rfloor\frac{\partial\theta}{\partial s}} & 0 & 0 & 0 & 0 & 0 \end{bmatrix}} \end{matrix}$ and project it onto all the process functions:

$\begin{matrix} {{\frac{\partial\beta_{1}}{\partial x} \cdot f_{0}} = {{- \left\lfloor {C^{G}n} \right\rfloor}b_{g}}} & \left( {A{.26}} \right) \\ {{\frac{\partial\beta_{1}}{\partial x} \cdot f_{li}} = {{\left\lfloor {C^{G}n} \right\rfloor e_{i}} = {{- \left\lfloor e_{i} \right\rfloor}C^{G}n}}} & \left( {A{.27}} \right) \\ {{{\frac{\partial\beta_{1j}}{\partial x} \cdot f_{2i}} = 0}{where}{{i = 1},2,3,{e_{1} = \begin{bmatrix} 1 & 0 & 0 \end{bmatrix}^{T}},{e_{2} = \begin{bmatrix} 0 & 1 & 0 \end{bmatrix}^{T}},{e_{3} = \begin{bmatrix} 0 & 0 & 1 \end{bmatrix}^{T}},{{\frac{\partial\theta}{\partial s}\frac{1}{2}D} = {{\frac{\partial\theta}{\partial s}\frac{\partial s}{\partial\theta}} = I_{3}}}}} & \left( {A{.28}} \right) \end{matrix}$

As such,

$\frac{\partial\beta_{1j}}{\partial x} \cdot f_{0}$ contains b_(g), and thus is not a function of the previously defined basis function β₁. To proceed, condition (A3) of Theorem 1 is used to define additional basis functions as nonlinear combinations of the system's Lie derivatives.

Since the basis function β₁ is the zeroth-order Lie derivative of the measurement h=z_(plane), then by definition, (A.26) is one of the first-order Lie derivatives:

${\frac{\partial\beta_{1}}{\partial x} \cdot f_{0}} = {\mathcal{L}_{f_{0}}^{1}h}$ Hereafter, this fact used to define more basis functions. By definition, the second-order Lie derivative

_(ƒ) ₀ _(ƒ) _(1i) ²h can be computed as

_(ƒ) ₀ _(ƒ) _(1i) ² h=∇

_(ƒ) ₀ ¹ h·ƒ _(1i) =−└└C ^(G) n┘e _(i) ┘b _(g)  (A.29)

If equation (A.29), for i=1, 2, 3, is stacked into a matrix form

$\begin{matrix} {\begin{bmatrix} {\mathcal{L}_{f_{0}f_{11}}^{2}h} \\ {\mathcal{L}_{f_{0}f_{12}}^{2}h} \\ {\mathcal{L}_{f_{0}f_{13}}^{2}h} \end{bmatrix} = {{- \begin{bmatrix} \left\lfloor {\left\lfloor {C^{G}n} \right\rfloor e_{1}} \right\rfloor \\ \left\lfloor {\left\lfloor {C^{G}n} \right\rfloor e_{2}} \right\rfloor \\ \left\lfloor {\left\lfloor {C^{G}n} \right\rfloor e_{3}} \right\rfloor \end{bmatrix}}b_{g}}} & \left( {A{.30}} \right) \end{matrix}$ since Y is a 9×3 matrix of full column rank, b_(g) can be determined in terms of the Lie derivatives

_(ƒ) ₀ _(ƒ) _(1i) ²h and β₁=C^(G)n. Therefore, b_(g) is a function of the Lie derivatives, and we define it as a new basis function: β₂

b _(g)  (A.31) Then, if the span of β₂ is computed and projected onto the process functions, the result is

$\begin{matrix} {{\frac{\partial\beta_{2}}{\partial x} \cdot f_{0}} = {{0{\frac{\partial\beta_{2}}{\partial x} \cdot f_{1\; i}}} = {{0{\frac{\partial\beta_{2}}{\partial x} \cdot f_{2\; i}}} = 0}}} & \left( {A{.32}} \right) \end{matrix}$ which are all zeros, and thus do not contain any term not belonging to the previously defined basis functions. Therefore, a complete basis function set of the IMU-RGBD camera navigation system has been found using a single plane feature.

Basis Functions when Using Both Plane and Point Features

The basis functions of the IMU-RGBD camera navigation system using only a single point feature are: [β₃ β₄ β₅ β₆ β₇ ]=[C(p _(ƒ) −p) b _(g) Cv Cg b _(a)]  (A.33) Since the basis functions are also the system's observable modes, the complete basis function set of the IMU-RGBD camera navigation system when using both plane and point features is the union of the basis function sets, {β₃,β₂} (resulting from measurements of the plane feature), and {β₃,β₄,β₅,β₆,β₇} (computed for observations of the point feature). Hereafter, the union of these two basis function sets is determined after removing redundant elements.

First, since β₂=β₄=b_(g), we have β₂∩β₄=b_(g). Then, under the assumption that the normal vector of the observed plane is not parallel to gravity, C=C(s) can be expressed in terms of ^(G)n, g, β=C^(G)n, and β₆=Cg. Since both ^(G)n and g are known quantities, we have β₁∩β₆=s. Therefore, the basis functions of the IMU-RGBD camera navigation system using both plane and point features are:

$\begin{matrix} {\beta^{\prime} = {\begin{bmatrix} \beta_{1}^{\prime} \\ \beta_{2}^{\prime} \\ \beta_{3}^{\prime} \\ \beta_{4}^{\prime} \\ \beta_{5}^{\prime} \end{bmatrix} = \begin{bmatrix} {C\left( {p_{f} - p} \right)} \\ s \\ {Cv} \\ b_{g} \\ b_{a} \end{bmatrix}}} & \left( {A{.34}} \right) \end{matrix}$ with which, we leverage result (i) of Theorem 1 to construct the observable system in terms of the basis functions as:

$\begin{matrix} \begin{matrix} {{{\overset{.}{\beta}}^{\prime} - {\frac{\partial\beta^{\prime}}{\partial x}x^{.}}} = {\frac{\partial\beta^{\prime}}{\partial x}\left( {{f_{0}(x)} + {\sum\limits_{i = 1}^{l}\;{{f_{i}(x)}u_{i}}}} \right)}} \\ {= {\begin{bmatrix} {{{- \left\lfloor {C\left( {p_{f} - p} \right)} \right\rfloor}b_{g}} - {Cv}} \\ {{- \frac{1}{2}}{Db}_{g}} \\ {{{- \left\lfloor {Cv} \right\rfloor}b_{g}} + {Cg} - b_{a}} \\ 0 \\ 0 \end{bmatrix} + {\begin{bmatrix} \left\lfloor {C\left( {p_{f} - p} \right)} \right\rfloor \\ {\frac{1}{2}D} \\ \left\lfloor {Cv} \right\rfloor \\ 0 \\ 0 \end{bmatrix}\omega} + {\begin{bmatrix} 0 \\ 0 \\ I \\ 0 \\ 0 \end{bmatrix}a}}} \\ {= {\begin{bmatrix} {{{- \left\lfloor \beta_{1}^{\prime} \right\rfloor}\beta_{4}^{\prime}} - \beta_{3}^{\prime}} \\ {{- \frac{1}{2}}{D\left( \beta_{2}^{\prime} \right)}\beta_{4}^{\prime}} \\ {{{- \left\lfloor \beta_{3}^{\prime} \right\rfloor}\beta_{4}^{\prime}} + {{C\left( \beta_{2}^{\prime} \right)}g} - \beta_{5}^{\prime}} \\ 0 \\ 0 \end{bmatrix} + {\begin{bmatrix} \left\lfloor \beta_{1}^{\prime} \right\rfloor \\ {\frac{1}{2}{D\left( \beta_{2}^{\prime} \right)}} \\ \left\lfloor \beta_{3}^{\prime} \right\rfloor \\ 0 \\ 0 \end{bmatrix}\omega} + {\begin{bmatrix} 0 \\ 0 \\ I \\ 0 \\ 0 \end{bmatrix}a}}} \end{matrix} & \left( {A{.35}} \right) \end{matrix}$ where D(β′₂)

I+└β′₂┘+β′₂β′₂ ^(T). System (A.35) is actually a minimal representation of the IMU-RGBD camera navigation system using both plane and point features. Hereafter, how to find the unobservable directions of the IMU-RGBD camera navigation system is shown by leveraging result (iii) of Theorem 1.

Determining the System's Unobservable Directions

In this section, the unobservable directions of the IMU-RGBD camera navigation system is first determined when observing only a single plane feature by computing the nullspace of the basis functions' span,

$B_{1}\overset{\bigtriangleup}{=}{\left\lbrack {\frac{\partial\beta_{1}^{T}}{\partial x}\frac{\partial\beta_{2}^{T}}{\partial x}} \right\rbrack^{T}.}$ Then, the unobservable directions of the IMU-RGBD camera navigation system when observing both a single plane feature and a single point feature is found by computing the nullspace of

$B_{2}\overset{\bigtriangleup}{=}{\frac{\partial\beta^{\prime}}{\partial x}.}$

Theorem 2: The IMU-RGBD camera navigation system observing a single plane feature is unobservable, and its unobservable directions are spanned by the IMU-RGBD camera orientation around the plane's normal vector and the accelerometer bias in the IMU frame {I}, as well as the IMU-RGBD camera position, velocity, and the point feature position in the global frame {G}.

Proof: In the previous section, it was shown that the basis function set {β₁, β₂} satisfies all three conditions of Theorem 1. Therefore, the system's unobservable directions span the nullspace of matrix B₁, which is formed by stacking the spans of the basis functions β₁ and β₂ as:

$\begin{matrix} \begin{bmatrix} {\left\lfloor {C^{G}n} \right\rfloor\frac{\partial\theta}{\partial s}} & 0 & 0 & 0 & 0 & 0 \\ 0 & 0 & 0 & 0 & 0 & I \end{bmatrix} & \left( {A{.36}} \right) \end{matrix}$ It can be seen that the nullspace of B₁ is spanned by:

$\begin{matrix} {N_{plane}\overset{\bigtriangleup}{=}{\begin{bmatrix} {\frac{\partial s}{\partial\theta}C^{G}n} & 0 & 0 & 0 & 0 \\ 0 & I & 0 & 0 & 0 \\ 0 & 0 & I & 0 & 0 \\ 0 & 0 & 0 & I & 0 \\ 0 & 0 & 0 & 0 & I \\ 0 & 0 & 0 & 0 & 0 \end{bmatrix} = {N_{plane}^{g}N_{plane}^{p}}}} & \left( {A{.37}} \right) \end{matrix}$ where N_(plane) ^(g) (the first column of N_(plane)) corresponds to the IMU-RGBD camera's rotation around the plane feature's normal vector, and N_(plane) ^(p) (the remaining columns of N_(plane)) denotes the unobservable directions in the IMU-RGBD camera velocity, position, the point feature position, and the accelerometer bias.

In contrast, when both point and plane feature measurements are available, we have:

Theorem 3: The IMU-RGBD camera navigation system using a single point feature and a single plane feature (of known direction which is not parallel to gravity) is unobservable, and its unobservable subspace is spanned by 3 directions corresponding to the IMU-RGBD camera position in the global frame {G}.

Proof: Employing result (iii) of Theorem 1, the system's unobservable directions can be determined by computing the nullspace of the span B₂ of the corresponding basis functions β′, where

$\begin{matrix} {B_{2} = \begin{bmatrix} {\left\lfloor {C\left( {p_{f} - p} \right)} \right\rfloor\frac{\partial\theta}{\partial s}} & 0 & {- C} & C & 0 & 0 \\ I & 0 & 0 & 0 & 0 & 0 \\ {\left\lfloor C_{v} \right\rfloor\frac{\partial\theta}{\partial s}} & C & 0 & 0 & 0 & 0 \\ 0 & 0 & 0 & 0 & 0 & I \\ 0 & 0 & 0 & 0 & I & 0 \end{bmatrix}} & \left( {A{.38}} \right) \end{matrix}$

Let N=[N₁ ^(T) N₂ ^(T) N₃ ^(T) N₄ ^(T) N₅ ^(T) N₆ ^(T)]^(T) be the right nullspace of matrix B₂. Hereafter, the relation B₂N=0 is used to determine the elements of N. Specifically, from the second, fourth, and fifth block rows of the product B₂N, we have: N ₁ =N ₅ =N ₆=03  (A.39) Then, from the first and third block rows of B₂N, we have N₃=N₄−I₃, and N₂=0₃. Using Gaussian elimination, it is easy to show that the rank of matrix B₂ is 15. Thus, the dimension of its right nullspace is exactly three, and the system's unobservable directions are spanned by: N

[0₃ 0₃ I ₃ I ₃ 0₃ 0₃]^(T)  (A.40) which corresponds to the global position of the IMU-RGBD camera and the point feature. Intuitively, this means that translating the IMU-RGBD camera and the point feature positions concurrently has no impact on the system's measurements.

The unobservable directions of the IMU-RGBD camera navigation system using only a single point feature are spanned by:

$\begin{matrix} {N_{point}\overset{\bigtriangleup}{=}{\begin{bmatrix} {\frac{\partial s}{\partial\theta}{Cg}} & 0_{3} \\ {{- \left\lfloor v \right\rfloor}g} & 0_{3} \\ {{- \left\lfloor p \right\rfloor}g} & I_{3} \\ 0_{3} & 0_{3} \\ 0_{3} & 0_{3} \end{bmatrix} = \begin{bmatrix} N_{point}^{g} & N_{point}^{P} \end{bmatrix}}} & \left( {A{.41}} \right) \end{matrix}$

Note that N=N_(plane)∩N_(point), which makes sense because any unobservable quantity of the IMU-RGBD camera navigation system using both point and plane feature observations, must be unobservable when the system uses either plane or point feature measurements.

Algorithm Description

This section presents an example IMU-RGBD camera navigation algorithm employing the observability constrained (OC)-EKF, which seeks to maintain the original system's observability properties in the linearized implementation (EKF). In particular, the implementation of the OC-EKF for processing point feature measurements is described. Then, it is proved that once the OC-EKF is employed for point feature measurements, the observability constraint is automatically satisfied for the plane feature measurements.

A system's observability Gramian, M, is defined as:

$\begin{matrix} {M = \begin{bmatrix} H^{1} \\ {H^{2}\Phi^{2,1}} \\ \vdots \\ {H^{k}\Phi^{k,1}} \end{bmatrix}} & \left( {A{.42}} \right) \end{matrix}$ where Φ^(k,1)

^(k−1) . . . Φ¹ is the state transition matrix from time step 1 to k, and H^(k) is the measurement Jacobian at time step k. A system's unobservable directions, N, are supposed to span the observability Gramian's nullspace: MN=0  (A.43) However, (A.43) does not hold when a nonlinear system is linearized using the current state estimate. As a consequence, the EKF gains spurious information along unobservable directions, which results in smaller uncertainty (that causes the filter to be inconsistent) and larger estimation errors. To address this issue, the OC-EKF modifies the state transition and measurement Jacobian matrices in such a way so that the resulting linearized system adheres to the observability properties of the original nonlinear system. In particular, (A.43) can be satisfied by enforcing the following two constraints: N ^(k+1)=Φ^(k) N ^(k)  (A.44) H ^(k) N ^(k)=0,∀k>0  (A.45) where N^(k) and N^(k+1) are the unobservable directions evaluated at time-steps k and k+1. Hereafter, an example implementation of the algorithm is described. Further example details can be found in C. X. Guo and S. I. Roumeliotis, “Observability-constrained EKF implementation of the IMU-RGBD camera navigation using point and plane features,” University of Minnesota, Tech. Rep., March 2013., incorporated herein by reference. Observability Constraint for Point Feature Measurements

In this section, the implementation of the OC-EKF for the IMU-RGBD camera navigation system using point feature measurements is presented.

Modification of the State Transition Matrix Φ^(k):

To start, the state transition matrix, Φ^(k), is modified according to the observability constraint (A.44) N _(point) ^(k+1)=Φ^(k) N _(point) ^(k)  (A.46) where N_(point) ^(k) and N_(point) ^(k+1), defined in (41), are the unobservable directions when using only point features, at time-steps k and k+1 respectively, and Φ^(k) has the following structure:

$\begin{matrix} \begin{bmatrix} \Phi_{11} & {0_{3}0_{3}} & {0_{3}0_{3}} & \Phi_{16} \\ \Phi_{21} & {I_{3}0_{3}} & {0_{3}\Phi_{25}} & \Phi_{26} \\ \Phi_{31} & {\delta\; t\; I_{3}I_{3}} & {0_{3}\Phi_{35}} & \Phi_{36} \\ 0_{3} & {0_{3}0_{3}} & {I_{3}0_{3}} & 0_{3} \\ 0_{3} & {0_{3}0_{3}} & {0_{3}I_{3}} & 0_{3} \\ 0_{3} & {0_{3}0_{3}} & {0_{3}0_{3}} & I_{3} \end{bmatrix} & \left( {A{.47}} \right) \end{matrix}$ The observability constraint (A.46) is equivalent to the following three constraints: Φ₁₁ C ^(k) g=C ^(k+1) g  (A.48) which is satisfied by modifying Φ₁₁*=C^(k+1)C^(k) ^(T) , and Φ₂₁ C ^(k) g=└v ^(k) ┘g−└v ^(k+1) ┘g  (A.49) Φ₃₁ C ^(k) g=δt└v ^(k) ┘g+└p ^(k) ┘g−└p ^(k+1) ┘g  (A.50) which can be formulated and solved analytically as a constrained optimization problem where we seek to find the closest, in the Frobenius norm, Φ₂₁* and Φ₃₁* that satisfy constraints (A.49) and (A.50).

Modification of the Measurement Jacobian H_(point):

During the update, we seek to modify the Jacobian matrix H_(point) ^(k) so as to fulfill constraint (A.45), i.e., H _(point) ^(k) N _(point) ^(k)=0  (A.51) Substituting H_(point) ^(k) and N_(point) ^(k), as defined in (A. 16) and (A.40) respectively, into (A.51), it can be shown that (A.51) is equivalent to the following two constraints

$\begin{matrix} {{\begin{bmatrix} H_{\theta_{2}}^{k} & H_{p}^{k} \end{bmatrix}\begin{bmatrix} {C^{k}g} \\ \left( {\left\lfloor p_{f}^{k} \right\rfloor - {\left\lfloor p^{k} \right\rfloor g}} \right) \end{bmatrix}} = 0} & \left( {A{.52}} \right) \\ {H_{p_{f}}^{k} = H_{p}^{k}} & \left( {A{.53}} \right) \end{matrix}$ As before, we can analytically determine H_(θ) ₂ ^(k)* and H_(p) ^(k)* that are closest to H_(θ) ₂ ^(k) and H_(p) ^(k) in the Frobenius norm, which also satisfy the constraint (A.52), and select H_(p) _(ƒ) ^(k)*=H_(p) ^(k)*.

Observability Constraint for Plane Feature Measurements

In this section, it is proved that once the OC-EKF is applied to the IMU-RGBD camera navigation system using point feature measurements, the observability constraint (A.43) is automatically satisfied for the plane feature measurements.

Substituting Φ^(k) and H_(plane) ^(k) into the observability Gramian M_(plane) for plane feature measurements, the first block row of M_(plane) is just the measurement Jacobian matrix M _(plane)(1)=H _(plane) ¹ =H _(C) ¹ [└C(^(I) q _(G) ¹)^(G) n┘0_(3×15)]  (A.54) while the kth block row is computed as

$\begin{matrix} {{M_{plane}(k)} = {H_{plane}^{k}\Phi^{k,1}}} \\ {= {H_{plane}^{k}\Phi^{k - 1}\mspace{14mu}\ldots\mspace{14mu}\Phi^{1}}} \\ {= {H_{c}^{k}\left\lbrack {\left\lfloor {{C\left( {{}_{}^{}{}_{}^{}} \right)}^{G}n} \right\rfloor{\prod\limits^{k}\;{0_{3 \times 12}\psi^{k}}}} \right\rbrack}} \end{matrix}$ where Π^(k) Φ₁₁ ^(k−1) . . . Φ₁₁ ¹, and ψ^(k) is a time-varying matrix that does not affect the current analysis. When applying the OC-EKF to point features, Φ₁₁ ^(k)=C^(k+1)C^(K) ^(T) is modified. Therefore, multiplying N_(plane) ^(g) and N_(plane) ^(p) to the right hand side of M_(plane), we have:

$\begin{matrix} {{{M_{plane}(1)}N_{plane}^{g}} = {H_{c}^{1}\left\lfloor {{C\left( {{}_{}^{}{}_{}^{}} \right)}^{G}n} \right\rfloor{C\left( {{}_{}^{}{}_{}^{}} \right)}^{G}n}} \\ {= 0} \end{matrix}$ $\begin{matrix} {{{M_{plane}(k)}N_{plane}^{g}} = {H_{c}^{k}\left\lfloor {{C\left( {{}_{}^{}{}_{}^{}} \right)}^{G}n} \right\rfloor\Phi_{11}^{k - 1}\mspace{14mu}\ldots\mspace{14mu}\Phi_{11}^{1}{C\left( {{}_{}^{}{}_{}^{}} \right)}^{G}n}} \\ {= {H_{c}^{k}\left\lfloor {{C\left( {{}_{}^{}{}_{}^{}} \right)}^{G}n} \right\rfloor C^{k}C^{k - 1^{T}}\mspace{14mu}\ldots\mspace{14mu} C^{2}C^{1}{C\left( {{}_{}^{}{}_{}^{}} \right)}^{G}n}} \\ {= {H_{c}^{k}\left\lfloor {{C\left( {{}_{}^{}{}_{}^{}} \right)}^{G}n} \right\rfloor{C\left( {{}_{}^{}{}_{}^{}} \right)}^{G}n}} \\ {= 0} \end{matrix}$ $\begin{matrix} {{{M_{plane}(1)}N_{plane}^{p}} = {{M_{plane}(k)}N_{plane}^{p}}} \\ {= 0} \end{matrix}$ Thus, M_(plane) N_(plane)=0 is automatically satisfied. In summary, after enforcing the observability constraint for point feature measurements on the state transition matrix, Φ^(k), the observability constraint (A.43) is automatically satisfied for the plane feature measurements.

EXPERIMENTAL RESULTS

An experimental setup was constructed comprising an InterSense™ NavChip IMU and a Kinect™ sensor, which contained an RGB camera and an infrared (IR) depth-finding camera. The intrinsic parameters of the Kinect RGB camera and IR camera, as well as the transformation between them, were determined offline using the algorithm described in D. Herrera, J. Kannala, and J. Heikkila, “Joint depth and color camera calibration with distortion correction,” IEEE Trans. on Pattern Analysis and Machine Intelligence, vol. 34, no. 10, pp. 2058-2064, October 2012, incorporated herein by reference. The IMU signals were sampled at 100 Hz, and the Kinect provided RGBD images at a frequency of 6.3 Hz. The plane features are extracted from the RGBD images using the method proposed in C. Erdogan, M. Paluri, and F. Dellaert, “Planar segmentation of RGBD images using fast linear fitting and markov chain monte carlo,” in Proc. of the IEEE International Conference on Computer and Robot Vision, Toronto, Canada, May 27-30 2012, pp. 32-39, incorporated herein by reference.

In the experiment, which took place in an office environment, a person holding the IMU-Kinect pair traversed for about 185 meters in two floors of a building, and returned to the initial position. Using the data collected, the final position error of the following five algorithms was examined:

-   -   1) MSC-KF: The Multi-state constraint Kailman filter of using         only point feature measurements.     -   2) MSC-KF w/ Planes: The MSC-KF that processes both point and         plane feature measurements.     -   3) OC-MSC-KF: The observability-constrained MSC-KF using only         point feature measurements.     -   4) OC-MSC-KF w/ Planes: The proposed algorithm described herein,         in which both point and plane feature measurements are processed         with the OC-MSC-KF.     -   5) OC-MSC-KF SLAM: In this algorithm, most of the point features         are processed as in the OC-MSC-KF, while also simultaneously         building a map with a small portion of the observed point         features using SLAM. This algorithm is generally viewed to be         much more accurate compared to the previous algorithms (as shown         in our experiment), because the filter can close loops when         observing the same point features again. However, SLAM has a         computational cost that is much higher (quadratic in terms of         the number of estimated point features), compared to the MSC-KF         (linear in the number of estimated point features). In our         experiment, it is used as a benchmark to examine the performance         of the other algorithms.

TABLE 1 CLOSE-LOOP ERRORS Estimation Algorithm Final Error (m) Pct. (%) MSC-KF 3.22 1.74 MSC-KF w/Planes 1.57 0.85 OC-MSC-KF 2.37 1.28 OC-MSC-KF w/Planes 1.46 0.79 OC-MSC-KF SLAM 0.093 0.05

FIG. 11 is a graph showing the overhead x-y view of the IMU-Kinect 3D trajectory and the point features estimated by the OC-MSC-KF SLAM. FIG. 12 is a graph showing IMU-Kinect trajectory estimated by the compared algorithms. The black triangle denotes the initial position of the IMU-Kinect pair. The 3D trajectory of the IMU-Kinect pair and the point features, estimated by OC-MSC-KF SLAM, are plotted in FIG. 11. The 3D trajectories estimated by the algorithms considered are shown in FIG. 12, and their final errors are reported in Table I.

As expected, OC-MSC-KF SLAM has the lowest final error, and our proposed algorithm, OC-MSC-KF w/ Planes, outperforms the other four algorithms. Additionally, the algorithms using both point and plane feature measurements (MSC-KF w/ Planes and OC-MSC-KF w/ Planes), have much smaller final error and perform closer to the OC-MSC-KF SLAM. This is because the plane features provide periodic corrections to the IMU-RGBD camera pair's orientation, thus also improving its position estimation accuracy. Finally, we note that enforcing the observability constraints (OC-MSC-KF and OC-MSC-KF w/ Planes) results in better accuracy since the filters do not process spurious information.

The previous section presented presents an algorithm for fusing inertial measurements, as well as point and plane feature observations captured from one or more image sources, such as an IMU-RGBD camera navigation system. Specifically, it was shown that by observing only a single plane feature of know direction, only the plane's direction in the IMU frame and the gyroscope bias are observable. Then, it was shown that by observing a single point feature and a single plane feature, of known direction other than the gravity, all the estimated quantities in the IMU-RGBD camera navigation system become observable, except the IMU-RGBD camera position in the global frame. Based on the observability analysis, an OC-EKF was described that significantly improves the estimation accuracy and consistency by removing spurious information along unobservable directions from the estimator.

FIG. 13 shows a detailed example of various devices that may be configured to implement some embodiments in accordance with the current disclosure. For example, device 500 may be a mobile sensing platform, a mobile phone, a workstation, a computing center, a cluster of servers or other example embodiments of a computing environment, centrally located or distributed, capable of executing the techniques described herein. Any or all of the devices may, for example, implement portions of the techniques described herein for vision-aided inertial navigation system.

In this example, a computer 500 includes a processor 510 that is operable to execute program instructions or software, causing the computer to perform various methods or tasks, such as performing the enhanced estimation techniques described herein. Processor 510 is coupled via bus 520 to a memory 530, which is used to store information such as program instructions and other data while the computer is in operation. A storage device 540, such as a hard disk drive, nonvolatile memory, or other non-transient storage device stores information such as program instructions, data files of the multidimensional data and the reduced data set, and other information. The computer also includes various input-output elements 550, including parallel or serial ports, USB, Firewire or IEEE 1394, Ethernet, and other such ports to connect the computer to external device such a printer, video camera, surveillance equipment or the like. Other input-output elements include wireless communication interfaces such as Bluetooth, Wi-Fi, and cellular data networks.

The computer itself may be a traditional personal computer, a rack-mount or business computer or server, or any other type of computerized system. The computer in a further example may include fewer than all elements listed above, such as a thin client or mobile device having only some of the shown elements. In another example, the computer is distributed among multiple computer systems, such as a distributed server that has many computers working together to provide various functions.

The techniques described herein may be implemented in hardware, software, firmware, or any combination thereof. Various features described as modules, units or components may be implemented together in an integrated logic device or separately as discrete but interoperable logic devices or other hardware devices. In some cases, various features of electronic circuitry may be implemented as one or more integrated circuit devices, such as an integrated circuit chip or chipset.

If implemented in hardware, this disclosure may be directed to an apparatus such a processor or an integrated circuit device, such as an integrated circuit chip or chipset. Alternatively or additionally, if implemented in software or firmware, the techniques may be realized at least in part by a computer readable data storage medium comprising instructions that, when executed, cause one or more processors to perform one or more of the methods described above. For example, the computer-readable data storage medium or device may store such instructions for execution by a processor. Any combination of one or more computer-readable medium(s) may be utilized.

A computer-readable storage medium (device) may form part of a computer program product, which may include packaging materials. A computer-readable storage medium (device) may comprise a computer data storage medium such as random access memory (RAM), read-only memory (ROM), non-volatile random access memory (NVRAM), electrically erasable programmable read-only memory (EEPROM), flash memory, magnetic or optical data storage media, and the like. In general, a computer-readable storage medium may be any tangible medium that can contain or store a program for use by or in connection with an instruction execution system, apparatus, or device. Additional examples of computer readable medium include computer-readable storage devices, computer-readable memory, and tangible computer-readable medium. In some examples, an article of manufacture may comprise one or more computer-readable storage media.

In some examples, the computer-readable storage media may comprise non-transitory media. The term “non-transitory” may indicate that the storage medium is not embodied in a carrier wave or a propagated signal. In certain examples, a non-transitory storage medium may store data that can, over time, change (e.g., in RAM or cache).

The code or instructions may be software and/or firmware executed by processing circuitry including one or more processors, such as one or more digital signal processors (DSPs), general purpose microprocessors, application-specific integrated circuits (ASICs), field-programmable gate arrays (FPGAs), or other equivalent integrated or discrete logic circuitry. Accordingly, the term “processor,” as used herein may refer to any of the foregoing structure or any other processing circuitry suitable for implementation of the techniques described herein. In addition, in some aspects, functionality described in this disclosure may be provided within software modules or hardware modules.

This disclosure analyzed the inconsistency of VINS from the standpoint of observability. For example, it was showed that standard EKF-based filtering approaches lead to spurious information gain since they do not adhere to the unobservable directions of the true system. Furthermore, an observability-constrained VINS approach was applied to mitigate estimator inconsistency by enforcing the nullspace explicitly. An extensive simulation and experimental results were presented to support and validate the described estimator, by applying it to both V-SLAM and the MSC-KF.

Various embodiments of the invention have been described. These and other embodiments are within the scope of the following claims. 

The invention claimed is:
 1. A vision-aided inertial navigation system comprising: at least one image source to produce image data for an environment; an inertial measurement unit (IMU) to produce IMU data indicative of motion of the vision-aided inertial navigation system; and a hardware-based processor configured to execute an estimator that computes state estimates for the vision-aided inertial navigation system based on the image data and the IMU data, wherein the estimator applies a constrained estimation algorithm that computes the state estimates based on the IMU data and the image data while preventing projection of information from the image data and IMU data along at least one unobservable degrees of freedom for the vision-aided inertial navigation system.
 2. The vision-aided inertial navigation system of claim 1, wherein the unobservable degrees of freedom comprise translations in horizontal and vertical directions and a rotation about a gravity vector, and wherein the estimator applies the constrained estimation algorithm to the image data and the IMU data to compute the state estimates by projecting the information from the image data and IMU data for at least the translations in horizontal and vertical directions while preventing projection of information from the image data and IMU data along the gravity vector.
 3. The vision-aided inertial navigation system of claim 1, wherein the processing unit computes a map of an area traversed by the vision-aided inertial navigation system based at least in part on the state estimates.
 4. The vision-aided inertial navigation system of claim 1, wherein the processing unit computes an odometry traversed by the vision-aided inertial navigation system based at least in part on the state estimates.
 5. The vision-aided inertial navigation system of claim 1, wherein the processing unit computes the state estimates for at least one of a pose of the vision-aided inertial navigation system, a velocity of the vision-aided inertial navigation system, a displacement of the vision-aided inertial navigation system and 3D positions of visual landmarks observed by the Image source.
 6. The vision-aided inertial navigation system of claim 1, wherein the estimator applies an Extended Kalman Filter (EKF) to compute the state estimates.
 7. The vision-aided inertial navigation system of claim 1, wherein the estimator enforces a nullspace associated with the at least one of the unobservable degrees of freedom when propagating current position and orientation information to the estimated states for the unobservable degrees of freedom.
 8. The vision-aided inertial navigation system of claim 1, wherein the processing unit applies visual simultaneous localization and mapping (V-SLAM) to compute orientation and position of features observed by the image source.
 9. The vision-aided inertial navigation system of claim 1, wherein the processing unit applies a Multi-state Constraint Kalman Filter (MSC-KF) to compute visual-inertial odometry.
 10. The vision-aided inertial navigation system of claim 1, wherein the estimator executes within a device that houses the image source and the IMU unit.
 11. The vision-aided inertial navigation system of claim 1, wherein the estimator executes on a processor remote from the image source and the IMU unit.
 12. The vision-aided inertial navigation system of claim 1, wherein the estimator computes the state estimates for the vision-aided inertial navigation system based on the IMU data and features extracted from the image data, wherein the features comprise points, lines, planes or geometric shapes based on combinations thereof.
 13. The vision-aided inertial navigation system of claim 1, wherein the vision-aided inertial navigation system comprises a mobile computing device.
 14. The vision-aided inertial navigation system of claim 1, wherein the image source comprises one or more of a cameras that capture 2D or 3D images, a laser scanner that produces a stream of 1D image data, a depth sensor that produces image data indicative of ranges for features within an environment, and a stereo vision system having multiple cameras to produce 3D information.
 15. A method comprising: receiving image data captured by an image source of a sensing device; receiving, from an inertial measurement unit (IMU) of the sensing device, inertial measurement data indicative of motion of the sensing device; and computing state estimates for the sensing device based on the image data captured by the image source and the inertial measurement data indicative of the motion of the sensing device, wherein computing the state estimates comprises applying a constrained estimation algorithm to prevent projection of information from the image data and IMU data along at least one of the unobservable degrees of freedom of the sensing device.
 16. The method of claim 15, wherein the unobservable degrees of freedom of the sensing device comprise translations in horizontal and vertical directions and a rotation about a gravity vector, and wherein the computing state estimates comprises applying the constrained estimation algorithm to correct the state estimates for translations of the sensing device in horizontal and vertical directions based on the inertial measurement data and the image data and prevent projection of information from the image data and IMU data for a rotation of the sensing device about the gravity vector.
 17. The method of claim 15, further comprising computing a map of an area traversed by the sensing device based at least in part on the state estimates.
 18. The method of claim 15, further comprising computing at least one of a pose of the sensing device, a velocity of the sensing device, a displacement of the sensing device and 3D positions of visual landmarks based at least in part on the state estimates for the subset of the unobservable degrees of freedom without utilizing state estimates of the at least one of the unobservable degrees of freedom.
 19. The method of claim 15, wherein computing state estimates comprises computing the state estimates for the vision-aided inertial navigation system based on the IMU data and features extracted from the image data, wherein the features comprise points, lines, planes or geometric shapes based on combinations thereof.
 20. A non-transitory computer-readable storage medium comprising program code that causes a processor of a computing device to: receive image data captured by an image source of a sensing device; receive, from an inertial measurement unit (IMU) of the sensing device, inertial measurement data indicative of motion of the sensing device; and compute state estimates the sensing device based on the image data captured by the image source and the inertial measurement data indicative of the motion of the sensing device, wherein computing the state estimates comprises applying a constrained estimation algorithm to compute the state estimates based on the IMU data and the image data while preventing projection of information from the image data and IMU data along at least one unobservable degrees of freedom for the sensing device.
 21. The vision-aided inertial navigation system of claim 1, wherein the estimator is configured to maintain a state vector that includes the state estimates for a position and orientation with respect to six degrees of freedom of the vision-aided inertial navigation system, and wherein, when processing the IMU data and image data to update the state estimates in the state vector, the estimator prevents update of the state estimates along at least one unobservable degrees of freedom for the sensing device.
 22. The method of claim 15, further comprising: maintaining, with the sensing device, a state vector that includes the state estimates for a position and orientation with respect to six degrees of freedom of the sensing device, and processing the image data and the IMU data with the sensing device to update the state estimates with the state vector with respect to the six degrees of freedom; and when processing the image data and IMU data, preventing update of the state estimates within the state vector along at least one unobservable degrees of freedom for the sensing device. 